C11头文件<threads.h>声明了创建和管理线程,信号,条件变量的函数

作者Danny Kalev 是通过以色列系统分析师协会认证的系统分析师, 并且是专攻C++的软件工程师. Kalev 写了多本C++的书籍,同时给不同的软件开发者站点投搞C++文章. 他是C++标准委员会的成员, 还获得了通用语言学的硕士学位.

原始鏈接:http://blog.chinaunix.net/uid-29843570-id-4470095.html已经被和谐

新的C11头文件<threads.h>声明了创建和管理线程, 信号, 条件变量的函数, 以及_Atomic类型限定符.

另一个新的头文件<stdatomic.h>声明了不可中断对象访问工具. 最后, C11引入一个新的存储类修饰符_Thread_local (等价于C++11 thread_local). 声明为_Thread_local的变量不在多线程之间共享. 确切的说, 每个线程持有变量单独的拷贝.

作为一个内幕, 如果你在正在找一个人为笨拙的关键字_Thread_local负责的话, 就找我吧. 在21世纪早期, 当C++标准委员会致力于多线程支持的时候, 最初的线程本地存储的提议是使用关键字__thread , 由于不能清楚的表达该关键字的意图,因此我认为这既不安全也不易懂 (毕竟, __thread并不创建线程!), 并且还可能碰巧和旧的使用__thread修饰用户声明的标识符的代码冲突. 我建议把__thread改为thread_local并且被接受了. 此后thread_local渗透进了其它编程语言, 包括C11. 礼物和恐吓邮件都是受欢迎的!

C11另一个线程相关的特性是quick_exit()函数, 该函数可以让你在exit()函数不起作用时终止程序, 例如当线程的cooperative cancellation是不可能的时候. quick_exit()函数确保使用at_quick_exit()注册的函数以它们注册顺序的相反顺序被调用. 然后at_quick_exit()调用_Exit(), 同exit()相比该函数不会刷新进程文件描述符.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值