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

是否有任何C库为GNU/Linux实现C11线程?,c,multithreading,c11,C,Multithreading,C11,有很多关于C11和C11线程的问题,但我没有看到一个明确的答案: 是否有任何C库实现了可在GNU/Linux上使用的C11线程接口?例如,从p附近提供“可选”的和类似的thrd_create()。376 理想情况下,我希望找到一个公共ish、开源或免费的库,用于公共/通用/多体系结构(例如GNU/Linux、x86_64或便携式ish) 一些更有用和相关的SO链接: 和在glibc上 这就是标准 关于叮当声 一般来说,关于C11,关于Windows和其他平台 更多关于C++11线程的内容,但我

有很多关于C11和C11线程的问题,但我没有看到一个明确的答案:

是否有任何C库实现了可在GNU/Linux上使用的C11线程接口?例如,从p附近提供“可选”的
和类似的
thrd_create()
。376

理想情况下,我希望找到一个公共ish、开源或免费的库,用于公共/通用/多体系结构(例如GNU/Linux、x86_64或便携式ish)

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

  • 和在glibc上
  • 这就是标准
  • 关于
    叮当声
  • 一般来说,关于C11,关于Windows和其他平台
  • 更多关于C++11线程的内容,但我只对C11感兴趣
库的一些非启动选项:

  • 图书馆;自2012年以来出现了一个新的趋势;有,但似乎
  • 项目没有C库
  • 图书馆;——现在有了!请参见下面的编辑和
  • 库支持线程(),但不使用
    pthread
    或C11线程
  • 没有
  • 图表,这是可疑的(例如,我在musl源代码中没有看到C11线程本地存储支持的证据)
  • 一些关于,
  • ,它仅显示为关闭和窗口
我对POSIX线程(许多好的选项)、Windows、IDE和C++11不感兴趣(我知道GNU
libstdc++
和LLVM/Clang
libc++
提供了C++11的
std::thread
,它使用
-pthread

谢谢



(重新)编辑:问题重新打开,以便澄清。

Hmmm,看起来GCC 4.9.0实际上提供了对C11标准的实质性支持(至少自2014年6月底左右修改web文档以来)

第四个版本的C标准,被称为C11,于年出版 2011年作为ISO/IEC 9899:2011。GCC基本上完全支持 本标准通过-std=c11或-std=iso9899:2011启用。(在 在开发过程中,此标准版本的草案被称为C1X。)

来自

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

从这一点上,很难说当踏板踩到金属上时,这一切到底意味着什么。将环境升级到最新的GCC 4.9.0版本和一些简单的驱动程序将确认它的实施程度

希望有帮助。

现在(从2014年9月起)实现C11线程

根据和上的其他对话,该库现在(截至2014-09-07)实现了C11线程接口,但在本文撰写时并未反映这一点


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

是一个“POSIX线程上的普通C11线程.h实现”。包含在一个标题中。

PDCLib(公共域C标准库)包括对threads.h的AFAICT完全支持,并且它不是pthreads的包装。

FreeBSD提供
threads.h
自FreeBSD 10.0以来,程序需要与libstdsthreads链接。

最终支持C11 ISO线程


我认为Archlinux、Gentoo和Suse Tumbleweed将很快支持它。今年晚些时候,Fedora和Ubuntu以及2019年或更晚些时候的其他版本。

FreeBSD似乎围绕着posix线程。你可以在这里找到它:
。我可以在Cygwin中使用它。到目前为止没有问题,但我还没有太多地使用它。

我没有发现:@Grady-谢谢;你的问题已经链接到上面的第4个链接。:)例如,根据经验,
glibc
\u STDC\u no\u线程设置为
1
。哦,对不起,我点击的次数不够。我不会太担心6:1的比例等同于工具购买问题(一个经过充分研究的工具购买问题)。glibc现在有支持,包括在2.28gcc支持中,但与glibc支持完全不同。对;我使用的是
gcc-4.9.0
glibc-2.19
(相信当前稳定)。组合将
\uu STDC\u NO\u THREADS\uu
报告为
1
,声明为“可选的”THREADS”功能,“因此我在别处寻找。”对于C语言功能和编译器特定的东西,
gcc
支持(大部分)C11(例如语法、语义、编译器特定的头,
libgcc
东西)。由于不同的原因,
gcc
codebase捆绑了
libstdc++
,但是
glibc
没有捆绑在
gcc
中,所以像
和ilk这样的C库东西是相当独立的。太棒了!下面是一个例子:谢谢,我刚刚尝试了
musl gcc figE_12.c
,并且能够用
编译一些东西。我试着在gcc上做,但做不到。我正在使用Debian stretch
gcc(Debian 6.3.0-18+deb9u1)6.3.0 20170516
它给了我
致命错误:threads.h:没有这样的文件或目录
我尝试链接
-threads
但刚得到
错误:无法识别的命令行选项'-threads';你的意思是“-pthread”?
不管怎样,musi都能工作。感谢