获取UNIX C程序的共享变量锁定的最简单方法是什么?

时间:2010-08-07 03:08:58

标签: c unix locking

我正在编写一个线程化的C UNIX程序,并在所有线程中共享一个变量。获取此变量锁定的最简单方法是什么?我找不到任何只用于在UNIX中锁定的小库。

有任何建议怎么做?

谢谢,Boda Cydo。

3 个答案:

答案 0 :(得分:4)

如果你已经在使用pthreads,那就是pthread_mutex_lock

快速示例,counter是共享变量,mutexpthread_mutex_t类型的互斥变量:

/* Function C */
void functionC()
{
   pthread_mutex_lock( &mutex );
   counter++;
   pthread_mutex_unlock( &mutex );
}

答案 1 :(得分:3)

您无法锁定变量。作为深入研究的主题,STM是一个很有前途的候选人,但还没有人编写过使用它的操作系统。

不,您只能阻止尝试访问该变量的代码。这通常使用互斥锁来完成。

答案 2 :(得分:1)

有一种广泛的方法可以做到这一点,我鼓励你们全面探索它们,但是一个很好的起点是mutex implementation in pthreads,它有几个方面可以做到这一点。 :pthreads可以在很多平台上使用,它是well-designed