pthread_cond_signal和pthread_cond_wait两个函数是怎么意思?

pselect 2012-03-31 02:14:52
pthread_cond_signal
pthread_cond_wait

pthread_mutex_lock
pthread_mutex_unlock
这几个函数是什么意思?怎么用,希望回答详细点,我是小白
...全文
214 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pselect 2012-03-31
  • 打赏
  • 举报
回复
还是不太理解啊,你给的例子是不是只能thread2先运行。否则thread1先运行、上锁,但又得不到条件变量(thread2才能发出,可锁还没解,thread2运行不了)而挂起,这样两线程就僵持住了?

如果是这样的话,那么我们还是需要另外的同步机制保证thread2先运行,这样感觉条件变量+互斥锁反而没起到同步的作用了
sundayX 2012-03-31
  • 打赏
  • 举报
回复
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。

//thread1
pthread_mutex_lock(&mutex);

...//临界资源
...
pthread_cond_signal(&cond);//激活信号,激活一个等待该条件的线程
...

pthread_mutex_unlock(&mutex);


//thread2
pthread_mutex_lock(&mutex);

...//临界资源
...
pthread_cond_wait(&cond, &mutex);//等待条件变量通知
...

pthread_mutex_unlock(&mutex);


sundayX 2012-03-31
  • 打赏
  • 举报
回复
查找一下线程同步。互斥和条件变量

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧