Search code examples
cmultithreadingc11

C11 GCC threads.h not found?


The following code

#include <threads.h>

Gives me this error:

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

Using the latest GCC and Clang with -std=c11.

Is C11 threading not supported by GCC and Clang? Or is there a hack (or something to install) to get it? I'm just using Ubuntu 14.04 with the gcc and clang packages from the Ubuntu repo.


Solution

  • The gcc document C11 status indicates that it does not support threading, it says:

    Threading [Optional] | Library issue (not implemented)

    As the document indicates this is not really a gcc or clang issue but glibc issue. As Zack pointed out it looks like there may be work under way soon to get support for this into glibc but that won't help you now. You can use this in the meantime.

    Fixed for glibc 2.28

    According the Bug 14092 - Support C11 threads this is fixed in glibc 2.28:

    Implemented upstream by:

    9d0a979 Add manual documentation for threads.h
    0a07288 nptl: Add test cases for ISO C11 threads
    c6dd669 nptl: Add abilist symbols for C11 threads
    78d4013 nptl: Add C11 threads tss_* functions
    918311a nptl: Add C11 threads cnd_* functions
    3c20a67 nptl: Add C11 threads call_once functions
    18d59c1 nptl: Add C11 threads mtx_* functions
    ce7528f nptl: Add C11 threads thrd_* functions

    It will be included in 2.28.