11. Конкуренция: взаимно изключване и синхронизация
Взаимно изключване: хардуера поддръжка.

   5.3 Взаимно изключване: хардуера поддръжка.
** Непозволяване на прекъсвания - проблеми при многопроцесорни системи и неефективно използване на ресурси..

** Специални машинни команди. Функцията testset не реализирана хардуерно и връща стойност за един такт на процесора, т.е. не може да се прекъсва.
bool testset(int &i)
{ if (i == 0)
  { i = 1; return true; }
           return false;
}
const int n; /* number of processes */
int bolt;
void P(int k)
{ while(true)
  {
   do nothing(); while (!testset(bolt));
   <critical section>
   bolt = 0;
   <remainder>
  }
}
void main()
{ parbegin(P(1),P(2),...,P(n)); }
    Когато променливата bolt има стойност 1, има процес в КС и функцията testset връща стойност false - т.е. всички процеси, които имат интерес за КС, чакат. Когато променливата bolt има стойност 0, няма процес в КС, функцията testset връща стойност false , като стойността на bolt става 1. Процес, който излиза от КС, променя стойността на bolt на 0. Гарантирано е ВИ, няма опасност от МХ.