首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将pthread_canelState设置为PTHREAD_CANCEL_DISABLE队列将取消请求?

将pthread_canelState设置为PTHREAD_CANCEL_DISABLE队列将取消请求?
EN

Stack Overflow用户
提问于 2014-07-11 15:44:02
回答 1查看 563关注 0票数 0

我正在努力理解Posix线程。在pthread_cancel()的手册页中提到,可以启用或禁用由pthread_setcancelstate()确定的线程的可取消状态。如果一个线程禁用了取消,那么取消请求将一直排队直到线程启用取消。

但是,当我在http://www.makelinux.net/alp/029上阅读线程取消点时,有人提到,如果我们将cancel类型设置为禁用(不可取消),则取消请求将被悄然忽略。

如果我们将取消类型设置为禁用,请让我知道取消请求是否正在排队或被忽略?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-12 22:48:15

POSIX线程通过组合两个二进制变量来控制线程取消:取消状态和取消类型。相应地,相关函数是pthread_setcancelstate()pthread_setcanceltype()。当状态设置为禁用时,取消请求将被忽略。它不会被抛出,它会被挂起(或者正如您正确地写的那样--“排队”),直到状态被设置为已启用。由于启用了状态,操作系统将根据取消类型启动取消进程。如果您有一个必须在取消线程之前执行的代码(例如内存取消分配等),则可以在输入代码之前将线程取消状态设置为禁用,并启用退出代码的取消。第二个问题是线程如何以及何时真正停止(取消)。取消类型的回答了这个问题。如果类型设置为(不推荐) asynchronous,,则取消可能发生在最近的指令处。如果将类型设置为默认的延迟取消,则取消将发生在下一个“取消点”,即检查线程取消状态并终止线程的POSIX函数。

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

https://stackoverflow.com/questions/24701607

复制
相关文章

相似问题

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