使用互斥量条件变量时的pthread_cancel

古罗斯

您好,我有一个有关取消使用互斥量和条件变量的线程的问题。线程具有取消类型的延迟。当我仅使用函数pthread_mutex_lock / unlock和pthread_cond_wait,并且取消请求到达时,线程的取消点仅是pthread_cond_wait。它会锁定互斥锁吗?我不确定线程​​是否总是使互斥锁解锁。还是pthread_mutex_lock / unlock函数也是取消点?谢谢你。

西斯

我怀疑我能说出比文档更好的措辞

条件等待(无论是否定时)是取消点。当线程的取消类型设置为PTHREAD_CANCEL_DEFERRED时,在条件等待期间对取消请求执行操作的副作用是(实际上)重新获取了互斥体,然后调用第一个取消清除处理程序。效果就好像该线程是未阻塞的,直到从调用返回到pthread_cond_timedwait()或pthread_cond_wait()的返回点为止都可以执行,但是此时通知取消请求,而不是返回到pthread_cond_timedwait()的调用者或pthread_cond_wait(),启动线程取消活动,其中包括调用取消清除处理程序。

同样只要确保您知道其他功能也是取消点即可

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

何时使用pthread条件变量?

使用pthread_cancel取消线程:好的做法还是不好的

pthread_cancel和取消点

使用互斥量“使用”时,“最终尝试发布”是否多余?

使用模拟时互斥量创建会挂起

C ++ 11:无法复制互斥量和条件变量

具有全局变量的pthread互斥量:正确用法?

如何使用多个互斥对象和条件控制pthread?

互斥量和变量更新

pthread_cancel之后的分段错误

使用互斥量和条件变量作为成员时,如何解决“使用删除的功能”?

通知条件变量后使用互斥

为什么POSIX将信号量标准化为系统调用,但将互斥量和条件变量留给Pthread(用户级别)

解决用餐哲学家的问题使用pthread,互斥锁和条件变量

C中的缓冲区互斥量和条件变量

与局部互斥量一起使用条件变量

如何创建仅在链接了pthread时使用互斥量的库?

Posix Thread-(互斥量和条件变量)问题,

C对如何初始化和实现pthread互斥量和条件变量感到困惑

如何通过使用pthread_cancel避免内存泄漏?

找不到使用Android工具链进行编译的pthread_cancel

在线程执行IO时,pthread_cancel会取消线程吗?

pthread条件变量和互斥锁,程序有死锁

C ++:使用互斥量和条件变量控制线程执行的顺序

使用包含使用互斥量的静态变量的共享dll时,为什么控制台应用程序挂起?

pthread_cancel()并使用清除处理程序。

传递类型强制转换的void指针时,pthread_cancel()不起作用

“pthread_join”不会在刚刚取消的线程上返回(使用“pthread_cancel”)

线程可以通过调用 pthread_cancel 来自毁吗