任何C库是否为GNU / Linux实现C11线程?

关于C11和C11线程有很多问题,但是我没有在任何地方看到明确的答案:

任何 C库都实现了GNU / Linux-like上可用的C11线程接口吗? 例如,从靠近p 的C11标准提供“可选” <threads.h>和线程支持库(如thrd_create() 。 376。

理想情况下,我希望find一个通用/通用/多种体系结构(例如,GNU / Linux,x86_64或便携式)的常见开源或免费库。

一些更有帮助和相关的SO链接:

  • 这一个和这一个 glibc ;
  • 这是谈论标准的一个;
  • 这一个关于clang ;
  • 这个关于C11的一般和这个关于Windows和其他平台的一个;
  • 更多的关于C ++ 11线程,但我只对C11感兴趣。

图书馆的一些非启动选项:

  • glibc库不 ; 自2012年以来有一个开放的错误 ; 有GSoC的build议,但似乎不被接受 ;
  • LLVM / Clang项目没有C库;
  • musl图书馆没有 ; – 现在呢! 请参阅下面的编辑并回答 。
  • Newlib库支持线程( docs ),但不使用pthread和C11线程;
  • uClibc没有;
  • 这个比较图,这是可疑的(例如,我看不到在C11线程本地存储支持musl来源的证据);
  • 一些关于BSD的post,
  • Pelles ,似乎是封闭的,只有Windows。

我对POSIX线程(很多很好的select),Windows,IDE,C ++ 11 都不感兴趣(我知道GNU libstdc++和LLVM / Clang libc++提供了C ++ 11的std::thread ,它使用了-pthread

谢谢!


(重新)编辑:问题重新打开,所以迁移的内容回答清理。

musl现在(截至2014年9月 – ish)实现C11线程!

根据2014年7月至9月这个名单上的这个musl邮件列表的post和其他对话,看来musl库现在(截至2014-09-07)实现了C11线程接口,虽然比较图表 ; 不写这篇文章反映了这一点。

由于这个问题重新开放,我把这个内容转移到了正确的答案上。

嗯,看起来GCC 4.9.0实际上提供了对C11标准的大量支持(至less在2014年6月底前修改了networking文档。

https://gcc.gnu.org/onlinedocs/gcc-4.9.0/gcc/Standards.html

C标准的第四版(C11)于2011年作为ISO / IEC 9899:2011发布。 GCC已经完全支持这个标准,使用-std = c11或-std = iso9899:2011。 (在开发过程中,这个标准版本的草稿被称为C1X。)

https://gcc.gnu.org/gcc-4.9/changes.html

现在支持ISO C11primefaces(_Atomictypes说明符和限定符和标题)。 现在支持ISO C11通用select(_Generic关键字)。 现在支持ISO C11线程本地存储(_Thread_local,类似于GNU C __thread)。 ISO C11支持现在与ISO C99支持具有相似的完整性:基本完整的模块错误,扩展标识符(当使用-fextended-identifiers时,除了angular落情况以外,支持),浮点问题(主要但不完全涉及可选附件F和G中的C99特征)和可选附件K(边界检查接口)和L(可分析性)。 一个新的C扩展__auto_type在GNU C中提供了C ++ 11 auto的一个子集。

从这个angular度来说,当踏板撞击金属时,很难说出所有这一切的真正意义。 将环境升级到最新的GCC 4.9.0版本以及一些简单的驱动程序可以确认实施的程度。

希望能帮助到你。

PDCLib(公有领域的C标准库)包括AFAICT对threads.h的全面支持,而且它不是pthread的包装。

FreeBSD提供了FreeBSD 10.0以来的threads.h程序需要链接到libstdsthreads。