Мы все знаем о семафоре и проблеме критической секции.
В pthreads это можно отсортировать с помощью pthread_mutex_lock( )
и pthread_mutex_unlock( )
.
Но зачем нам эти системные вызовы, когда то же самое можно реализовать в коде, сделав что-то вроде:
flag = 0;
if (flag) // Thread1 enters and makes flag = 0
{
flag = 0; // On entering critical section, flag is made 0 so that others can't enter
// do some critical section operation
flag = 1;
}
// Thread1 exits
Сделав то же самое, что и выше, решит ли это проблему критической секции?Если нет, то почему?