关于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链接:
thrd_create()
;
glibc
; glibc
一般关于C11和关于Windows和其他平台的does not; 库的一些非入门选项:
clang
或C11线程; 我 不 对POSIX线程(许多优秀选项),Windows,IDE或C ++ 11感兴趣(我知道GNU pthread
和LLVM / Clang libstdc++
提供C ++ 11&#39; libc++
,它使用std::thread
)
谢谢!
(重新)编辑:问题重新打开,所以{{3}}要清理。
答案 0 :(得分:17)
musl现在(截至2014年9月 - ish)实现了C11线程!
根据this recent musl mailing list post和that 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中使用它。到目前为止没有问题,但是我还没有使用过它。