我们都知道信号量和临界区问题。
在 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
和上面一样,能解决临界区问题吗?如果不是,那为什么?