Without realizing what I was getting myself into, I wrote some code using C11's threads.h
(EDIT: every time I use the angle brackets <
and they just get eaten, even in the code snippet block.) I'm realizing after the fact that this is basically only supported on Linux (gcc/clang). This is my target platform, but I guess if I could cross compile to Windows or macOS that would be nice, too.
C's threads nominally appear to be a great feature. Finally, a standardized and straightforward interface to threads that would be cross-platform compatible. The reality appears to be anything but.
So is it worth just replacing that code with pthreads? Is there some near-term development on C threads that might make this worthwhile to use? I'm kind of surprised it hasn't really caught on some 12 years after the standard was introduced.
As far as I know, C's
threads.h
implementation (orstd::thread
for C++) is based on POSIX threads.If you're using CMake or a similar build system that can define macros when building from Windows, then one option you have is to simply create an interface of sorts.
Something like:
// angle brackes work for this codeblock? idk #ifdef PLATFORM_WIN32 // The syntax MSVC wants (which I'm not familiar with) #include "fuckmissingbracketsidontrememberwhatiwrotehere" thread_t win32_create_thread( /* ... */ ) { /* ... */ } #else // The syntax sensible compilers want (which I'm also unfamiliar with because I forgor U+1F480) #include "fuckmissingbracketsidontrememberwhatiwrotehere" int thrd_create( /* ... */ ) { /* ... */ } #endif
It may be a bit tedious, but I don't know if there is some widely known C equivalent to the Boost library, at least for threads.
Yeah. I think I'll end up having to do platform-specific ifdefs with either pthreads or threads.h, so I guess I may as well use the much better established pthreads and get macOS support by default. In fact, I just now learned that even glibc didn't support C11 threads until 2018, according to this https://sourceware.org/bugzilla/show_bug.cgi?id=14092#c10
deleted by creator
Sadly. angle brackes do not work for that codeblock.
I swear they did in the preview