是否有类似“ pthread_getcancelstate”的功能?

Linux Pthread库包含2个函数来设置线程的取消状态和取消类型:

  • int pthread_setcancelstate(int state, int *oldstate)
  • int pthread_setcanceltype(int type, int *oldtype)

如何接收这些状态和类型?是否有类似pthread_getcancelstate的功能pthread_getcanceltype我在互联网上搜索,但没有找到解决方案。

乔纳森·莱夫勒

由于功能pthread_setcancelstate()pthread_setcanceltype()通过参数列表返回老态,你可以调用函数来设置的“安全”状态/类型(PTHREAD_CANCEL_DISABLE以及PTHREAD_CANCEL_DEFERRED,我认为),如果旧的国家/类型是不一样的,调用该函数第二次恢复旧状态/类型。新状态/类型似乎没有“ no-op”值。

int pthread_getcancelstate(int *oldstate)
{
    int dont_care;
    int rc = pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, oldstate);
    if (rc == 0 && *oldstate != PTHREAD_CANCEL_DISABLE)
        rc = pthread_setcancelstate(*oldstate, &dont_care);
    return rc;
}

int pthread_getcanceltype(int *oldtype)
{
    int dont_care;
    int rc = pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, oldtype);
    if (rc == 0 && *oldtype != PTHREAD_CANCEL_DEFERRED)
        rc = pthread_setcanceltype(*oldtype, &dont_care);
    return rc;
}

另一个状态是PTHREAD_CANCEL_ENABLE,另一个类型是PTHREAD_CANCEL_ASYNCHRONOUS

在macOS上这些功能的手册页上确实说允许为旧状态/类型传递空指针,因此可以dont_care在macOS上消除该变量。但是,POSIX规范和(RHEL 7.4)Linux上的手册页都没有说允许使用空指针。上面的代码在这两个平台上均应安全运行。

该代码还侵入了保留供实现使用的名称空间-实现可以选择添加一个或两个pthread_getcancelstate()两者pthread_getcanceltype()(具有相同或不同的接口),除了重命名上面显示的功能外别无选择。添加_np(非便携式)后缀可能也无济于事。实现可以选择使用带后缀的名称。

有了这些函数的适当声明以及<pthread.h>包括标头,代码现在可以干净地编译(但是在先前版本中缺少复制/粘贴的编辑)。不幸的是,先前的警告是合理的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node JS 是否有类似 python 的类似应用功能

来自分类Dev

Clojure是否具有类似Mathematica的%的功能?

来自分类Dev

在Clojure中,是否有类似Haskell的功能?

来自分类Dev

Pig中是否有类似DECODE的功能?

来自分类Dev

AngularJS是否具有类似eval的功能?

来自分类Dev

Fsharp交互中是否有类似Python帮助功能的东西?

来自分类Dev

iOS是否具有类似于Android的RecyclerView的功能?

来自分类Dev

除了功能之外,是否有对象的“ this”的类似物?

来自分类Dev

PyCharm中是否有多个类似游标的功能?

来自分类Dev

在MSMQ中是否有类似JMS Topic的功能?

来自分类Dev

xubuntu中是否有类似于窗口概述的曝光功能?

来自分类Dev

“较少”是否具有类似“ tail --follow = name”(“-F”)的功能

来自分类Dev

xubuntu中是否有类似于窗口概述的曝光功能?

来自分类Dev

Clojure是否具有类似于Mathematica中BinCounts的功能?

来自分类Dev

javascript是否具有与php串联分配(。=)类似的功能?

来自分类Dev

PostgreSQL中是否有类似于Cassandra的键空间的功能?

来自分类Dev

数组是否有类似迭代器的功能(或解决方法)?

来自分类Dev

Hubot是否具有与botkit的对话功能类似的功能/解决方法?(并让hubot忘记回复)

来自分类Dev

是否有类似onChange的功能,该功能也可以通过JavaScript监听更改?

来自分类Dev

是否有一个终端注销,其功能类似于GNU Screen的行为?

来自分类Dev

Aerospike是否具有类似于HBase协处理器的功能?

来自分类Dev

Ruby是否具有与Lodash中的pluck(arr,key)类似的功能?

来自分类Dev

在vb.net中是否有类似于“ with”的东西,但是功能呢?

来自分类Dev

是否有一个本机分组函数,其功能类似于sortWith函数?

来自分类Dev

就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

来自分类Dev

Android Studio是否具有类似于Xcode的快速跳转栏和MARK的功能:

来自分类Dev

屏幕上是否有类似的窗口小部件或功能(如“ showModelBottomSheet”)从右手弹出?

来自分类Dev

Fish中是否有类似于Bash的CTRL + R的“反向增量搜索”功能?

来自分类Dev

就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

Related 相关文章

  1. 1

    Node JS 是否有类似 python 的类似应用功能

  2. 2

    Clojure是否具有类似Mathematica的%的功能?

  3. 3

    在Clojure中,是否有类似Haskell的功能?

  4. 4

    Pig中是否有类似DECODE的功能?

  5. 5

    AngularJS是否具有类似eval的功能?

  6. 6

    Fsharp交互中是否有类似Python帮助功能的东西?

  7. 7

    iOS是否具有类似于Android的RecyclerView的功能?

  8. 8

    除了功能之外,是否有对象的“ this”的类似物?

  9. 9

    PyCharm中是否有多个类似游标的功能?

  10. 10

    在MSMQ中是否有类似JMS Topic的功能?

  11. 11

    xubuntu中是否有类似于窗口概述的曝光功能?

  12. 12

    “较少”是否具有类似“ tail --follow = name”(“-F”)的功能

  13. 13

    xubuntu中是否有类似于窗口概述的曝光功能?

  14. 14

    Clojure是否具有类似于Mathematica中BinCounts的功能?

  15. 15

    javascript是否具有与php串联分配(。=)类似的功能?

  16. 16

    PostgreSQL中是否有类似于Cassandra的键空间的功能?

  17. 17

    数组是否有类似迭代器的功能(或解决方法)?

  18. 18

    Hubot是否具有与botkit的对话功能类似的功能/解决方法?(并让hubot忘记回复)

  19. 19

    是否有类似onChange的功能,该功能也可以通过JavaScript监听更改?

  20. 20

    是否有一个终端注销,其功能类似于GNU Screen的行为?

  21. 21

    Aerospike是否具有类似于HBase协处理器的功能?

  22. 22

    Ruby是否具有与Lodash中的pluck(arr,key)类似的功能?

  23. 23

    在vb.net中是否有类似于“ with”的东西,但是功能呢?

  24. 24

    是否有一个本机分组函数,其功能类似于sortWith函数?

  25. 25

    就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

  26. 26

    Android Studio是否具有类似于Xcode的快速跳转栏和MARK的功能:

  27. 27

    屏幕上是否有类似的窗口小部件或功能(如“ showModelBottomSheet”)从右手弹出?

  28. 28

    Fish中是否有类似于Bash的CTRL + R的“反向增量搜索”功能?

  29. 29

    就安全漏洞而言,Firefox是否具有类似于ActiveX的功能?

热门标签

归档