任何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。