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

时间:2014-07-03 15:26:06

标签: c multithreading c11

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

任何 C库是否实现了在GNU / Linux上可用的C11线程接口?例如,提供&#34;可选&#34; <threads.h>thread support library之类的the C11 standard来自this one附近的this one。 376。

理想情况下,我希望找到一个普通的,开源的或免费的库,用于通用/通用/多架构(例如,GNU / Linux,x86_64或者便携式)。 / p>

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

库的一些非入门选项:

对POSIX线程(许多优秀选项),Windows,IDE或C ++ 11感兴趣(我知道GNU pthread和LLVM / Clang libstdc++提供C ++ 11&#39; libc++,它使用std::thread

谢谢!


(重新)编辑:问题重新打开,所以{{3}}要清理。

7 个答案:

答案 0 :(得分:17)

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

根据this recent musl mailing list postthat list in Jul-Sep 2014上的其他对话,现在看来musl库(截至2014-09-07)实现了C11线程接口,但{{3 }};在撰写本文时没有反映这一点。

由于此问题已重新打开,我将此内容转移到了正确的答案。

答案 1 :(得分:13)

最后GNU LIBC 2.28支持C11 ISO线程。

我认为Archlinux,Gentoo和Suse Tumbleweed将很快支持它。今年晚些时候,Fedora和Ubuntu将在2019年或以后推出。

答案 2 :(得分:9)

https://github.com/jtsiomb/c11threads是一个“关于POSIX线程的Trivial C11 threads.h实现。”包含在一个标题中。

答案 3 :(得分:4)

嗯,看起来GCC 4.9.0实际上为C11标准提供了大量支持(至少自2014年6月底以来网络文档被修改以来。

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

  

C标准的第四个版本,即C11,发表于   2011年为ISO / IEC 9899:2011。海湾合作委员会基本上完全支持   此标准,使用-std = c11或-std = iso9899:2011启用。 (而在   开发,这个标准版本的草稿被称为C1X。)

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

  

ISO C11原子(_Atomic类型说明符和限定符和    标题)现在支持。 ISO C11通用选择   (_Generic keyword)现在受支持。 ISO C11线程本地存储   (_Thread_local,类似于GNU C __thread)现在支持。 ISO C11   现在支持与ISO C99支持完全相同:   基本完整的模数错误,扩展标识符(支持   除了使用-fextended-identifiers时的极端情况),   浮点问题(主要但不完全与可选问题有关)   附件F和G)的C99特征和可选附件K.   (边界检查接口)和L(可分析性)。一个新的C扩展   __auto_type提供了GNU C中C ++ 11 auto的一部分功能。

由此,当踏板撞到金属时,很难说出所有这些真正意味着什么。将环境升级到最新的GCC 4.9.0版本以及一些简单的驱动程序将确认它的实现程度或实施程度。

希望它有所帮助。

答案 4 :(得分:3)

FreeBSD提供threads.h,因为FreeBSD 10.0程序需要与libstdsthreads链接。

答案 5 :(得分:1)

PDCLib(Public Domain C标准库)包括AFAICT对threads.h的完全支持,它不是pthreads的包装器。

答案 6 :(得分:0)

FreeBSD似乎包裹着posix线程。你可以在这里找到它: FreeBSD c11 threads。我可以在Cygwin中使用它。到目前为止没有问题,但是我还没有使用过它。