pthread_cond_t的这外用法对吗

peimoxu 2009-10-14 09:25:10
大家帮忙看看这个代码是不是正确(代码没有运行测试,只为说明问题)。
我的问题是:
1 这理的pthread_cond_signal是否需要lock保护
pthread_mutex_lock(&lock);
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);

2 有人说pthread_cond_wait必须用while,不知是否正确
pthread_mutex_lock(&lock);
while(condition)
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);



pthread_mutex_t lock;
pthread_cond_t cond;


void* thr_fn(void* p)
{
//初始化代码
//init();

pthread_mutex_lock(&lock);
pthread_cond_signal(&cond);
pthread_mutex_unlock(&lock);

//其它功能代码
//dosomething();

return NULL;
}

int main()
{
pthread_t ntid;
pthread_mutex_init(&lock);
pthread_cond_init(&cond);

pthread_create(&ntid, NULL, thr_fn, NULL);

//等待thr_fn初始化完才往下运行
pthread_mutex_lock(&lock);
pthread_cond_wait(&cond, &lock);
pthread_mutex_unlock(&lock);

//其它功能代码
//dosomething();

pthread_join(&ntid,NULL);

return 0;
}
...全文
98 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
herman~~ 2009-10-14
  • 打赏
  • 举报
回复
不用加互斥锁吧
pcboyxhy 2009-10-14
  • 打赏
  • 举报
回复
When we put a message on the work queue, we need to hold the mutex, but we don't need to hold the mutex when we signal the waiting threads.
pcboyxhy 2009-10-14
  • 打赏
  • 举报
回复
apue 11.14
peimoxu 2009-10-14
  • 打赏
  • 举报
回复
?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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