这两个线程如何互斥。打个比方:int a=0,b=0; //全局变量void * thread1() //线程1{//................a += 1; //①b = a; //②}void * thread2() //线程2{//.............a += 2;}这两个线程在同时运行,但我要实现当线程1运行到语句①时,暂停线程2,让b得到的值是线程1中的当前的a值,而不是可能被线程2改变的a值。当执行完语句②之后又恢复到两个线程同时运行的情况。pthread_mutex_lock(&mut);a+=1;b=a;pthread_mutex_unlock(&mut);就是这个函数,这样能达到什么效果。好吧,我对多线程理解错了,是两个线程之间交替运行,所以b得到的始终是线程1里面的a值,但如果有延时函数,多线程之间是如何运作的,比如线程1里面有Sleep(1000)这个函数。
2 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
void * thread1() //线程1
{
//............. pthread_mutex_lock(&mut);
a += 1; //①
b = a; //②
pthread_mutex_unlock(&mut);
}
void * thread2() //线程2
{
//.............
pthread_mutex_lock(&mut);
a += 2;
pthread_mutex_unlock(&mut);
}
这样就行呀, 加锁后另一个要等待锁释放
- 2 回答
- 0 关注
- 78 浏览
添加回答
举报
0/150
提交
取消