web-dev-qa-db-ja.com

C11 GCC threads.hが見つかりませんか?

次のコード

#include <threads.h>

私にこのエラーを与えます:

fatal error: threads.h: No such file or directory

-std = c11で最新のGCCとClangを使用します。

C11スレッドはGCCとClangでサポートされていませんか?それを取得するためのハック(またはインストールするもの)はありますか?私はちょうどUbuntu 14.04をUbuntuリポジトリのgccおよびclangパッケージと共に使用しています。

23
lucasart

gccドキュメント C11ステータス は、スレッド化をサポートしていないことを示しています。

スレッディング[オプション] |ライブラリの問題(実装されていません)

ドキュメントに示されているように、これは実際にはgccまたはclangの問題ではなく、glibcの問題です。ザックが指摘したように、これはglibcへのサポートを得るために すぐに作業中の可能性があります のように見えますが、現在は役に立ちません。当面は this を使用できます。

Glibc 2.28で修正されました

バグ14092-サポートC11スレッド によると、これはglibc 2.28で修正されています。

以下によって上流に実装されます:

9d0a979 threads.hのマニュアルドキュメントを追加
0a07288 nptl:ISO C11スレッドのテストケースを追加
c6dd669 nptl:C11スレッドのアビリストシンボルを追加
78d4013 nptl:C11スレッドのtss_ *関数を追加
918311a nptl:C11スレッドcnd_ *関数を追加します
3c20a67 nptl:C11スレッドのcall_once関数を追加
18d59c1 nptl:C11スレッドのmtx_ *関数を追加
ce7528f nptl:C11スレッドを追加するthrd_ *関数

2.28に含まれる予定です。

21
Shafik Yaghmour

音楽 C11 <threads.h>をサポートします。

Debianでmusl-toolsをインストールしてから、musl-gccでコンパイルします。私はGlibcではなくMuslでDebianをブートストラップする作業をしています。

this も参照してください。

4
user2548688

C11スレッドはまだ実装されていませんが、C++ 11スレッドは実装されており、同様の機能を備えています。もちろん、C++ 11は受け入れられない解決策かもしれません。その場合、POSIXスレッドに関する以前のコメントがあなたの最善の希望です。

1
Jeff