首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果pthread_mutex_wait上阻塞的进程发出信号(os信号,而不是pthread_mutex_unlock),会发生什么情况

问如果pthread_mutex_wait上阻塞的进程发出信号(os信号,而不是pthread_mutex_unlock),会发生什么情况
EN

Stack Overflow用户
提问于 2020-03-19 09:25:44
回答 1查看 23关注 0票数 0

让我困惑的是pthread_mutex_lock没有E_INTR作为返回值。尽管由于while循环和Mesa监视器语义,pthread_cond_wait可能会被虚假唤醒并返回0,但这不是问题。

那么,如果一个进程被pthread_mutex_lock阻塞,并且您发送一个信号来唤醒它,那么在信号处理程序被执行之后,会发生什么呢?有什么机制可以避免这种虚假的唤醒吗?

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 11:03:34

如果一个进程被pthread_mutex_lock阻塞,你发送一个信号来唤醒它,在信号处理程序被执行之后,会发生什么?

如果信号处理程序没有调用任何异步信号不安全操作,那么在处理程序返回之后,进程将继续等待互斥锁。

如果信号处理程序确实调用了异步信号不安全操作(例如,解锁互斥锁),则行为是未定义的:任何事情都可能发生,包括(但不限于)崩溃、永远阻塞、出现“正常”工作等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60749687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档