gpt4 book ai didi

linux - 将 pthread_canelState 设置为 PTHREAD_CANCEL_DISABLE 会使取消请求排队吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:07:21 24 4
gpt4 key购买 nike

我正在尝试理解 Posix 线程。在 pthread_cancel() 的手册页中,提到“线程的可取消状态,由 pthread_setcancelstate() 确定,可以启用或禁用。如果线程已禁用取消,则取消请求将保持排队状态,直到线程启用取消。

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

如果我们将取消类型设置为 DISABLED,谁能告诉我取消请求是排队还是被忽略?

最佳答案

POSIX 线程通过两个 二进制变量的组合控制线程取消:取消STATE 和取消TYPE。相应的相关函数是 pthread_setcancelstate()pthread_setcanceltype()。当 STATE 设置为禁用时,取消请求将被忽略。它不会被丢弃,它会被暂停(或者如您正确写的那样 - “排队”),直到 STATE 设置回启用状态。由于状态为启用,因此操作系统根据取消类型启动取消过程。如果您有一段代码必须在线程取消之前执行(例如内存释放等),您可以在进入代码之前将线程取消状态设置为禁用,并启用退出代码的取消。第二个问题是线程真正停止(取消)的方式和时间。取消类型回答了这个问题。如果类型设置为(不推荐)异步,取消可能发生在最近的指令。如果类型设置为默认的deferred 取消,取消将发生在下一个“取消点”,这是一个检查线程取消状态并终止线程的POSIX 函数。

关于linux - 将 pthread_canelState 设置为 PTHREAD_CANCEL_DISABLE 会使取消请求排队吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com