I am writing a multi-threaded program on Windows. Since there is no windows implementation of C that I know of to support C11 threads, my best bet is to use the native WinAPI multi-threading. But there is a catch. Some functions in the C library, such as malloc or I/O functions are demanded to be thread-safe by the C11 standard. But are they required to be thread-safe even if __STDC_NO_THREADS__ is defined? It seems pointless for them to be thread-safe if no thread facilities exist in the C implementation, but it would truly help since I really don't want to have to wrap all I/O functions in mutexes.