pthread_cond_signal会导致调用的线程返回吗?

DoDoMouse 2015-04-06 11:24:08
我发现在我机器上,线程调用了pthread_cond_signal之后,后面的函数都不会被执行,是不是该函数会直接return?

如下例子,始终不会打印exit func2信息,放到mutex_unlock之前,也不会unlock该mutex了:
void* func2(void* arg)
{
printf("in func2\n");
struct argstr* l = (struct argstr*)arg;
pthread_mutex_lock(&(l->mut));
(l->i)++;
(l->i)++;
printf("func2 add finished\n");
pthread_cond_signal(&(l->cond));
pthread_mutex_unlock(&(l->mut));
l->ready=true;
//pthread_cond_signal(&(l->cond));
printf("exit func2\n");
}
...全文
98 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
羽飞 2015-04-06
  • 打赏
  • 举报
回复
signal自然不会导致函数return 不过建议放在mutex_unlock之后,因为收到signal唤醒的进程,需要对mutex加锁
羽飞 2015-04-06
  • 打赏
  • 举报
回复
用pstack看下卡在哪里就知道了
DoDoMouse 2015-04-06
  • 打赏
  • 举报
回复
引用 1 楼 hnwyllmm 的回复:
signal自然不会导致函数return 不过建议放在mutex_unlock之后,因为收到signal唤醒的进程,需要对mutex加锁
那为什么printf的一直打印不出来?

64,683

社区成员

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

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