我正在编写一个线程化的C UNIX程序,并在所有线程中共享一个变量。获取此变量锁定的最简单方法是什么?我找不到任何只用于在UNIX中锁定的小库。
有任何建议怎么做?
谢谢,Boda Cydo。
答案 0 :(得分:4)
如果你已经在使用pthreads,那就是pthread_mutex_lock。
快速示例,counter
是共享变量,mutex
是pthread_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。