Стандартный заголовок C11 для многопоточности - <threads.h>
, а не <thread.h>
. См. Раздел 7.26 N1570 черновик .
Большая часть стандартной библиотеки C, включая, например, stdio, не включена в дистрибутив gcc. Вместо этого gcc зависит от того, какая библиотека времени выполнения предоставлена операционной системой. Обычно это включает как заголовки (например, <threads.h>
), так и реальный код, реализующий библиотеку.
Для большинства систем Linux (или GNU / Linux, если вы предпочитаете) библиотека - это glibc GNU; для других систем это будет что-то другое.
Таким образом, реальный вопрос, вероятно, заключается в том, когда glibc, или какая библиотека C вы используете, будет поддерживать функции потоков C11.
В glibc добавлена поддержка потоков C11 в версии 2.28 . Система Ubuntu 18.04.1 LTS в настоящее время все еще использует glibc 2.27. Опять же, это относится только к реализациям, использующим GNU libc, а не ко всем реализациям на основе gcc. Упоминается WorldSEnder в комментарии.
ОБНОВЛЕНИЕ: Ubuntu 18.10 (не версия LTS (Long Term Support)) имеет glibc 2.28, который поддерживает <threads.h>
. Также, как указывает user2548688 , библиотека musl C поддерживает <threads.h>
. В Ubuntu вы можете установить пакет musl-dev
и использовать команду musl-gcc
.
(Обратите внимание, что некоторые части библиотеки, наиболее тесно связанные с компилятором, предоставляются самим gcc. Библиотека потоков , вероятно, не является одной из них, но, безусловно, требуется некоторая поддержка компилятора.)