Home > Net >  Is C 11's std::thread compatible with POSIX semaphores?
Is C 11's std::thread compatible with POSIX semaphores?

Time:10-24

I want to use threads in my C application by using the standard C std::thread library, however y wanted to use semaphores and using the C 20's semaphores wasn't possible, I wanted to know if POSIX semaphores <semaphore.h> is compatible with C STD's Threads or I have to change my code in order to use POSIX threads

CodePudding user response:

The C standard library will implement std::thread as a wrapper over pthreads on POSIX systems, so using <semaphore.h> would be fine. Semaphores are usually implemented regardless of the specific threading interface, though the C standard library may do some book-keeping at the same time using pthreads.

For this reason, calling sem_wait() from a thread (whether it be a pthread_t or an std::thread) will have the same effect, though it may be better to just use pthreads, as they would be the most "compatible", especially since you are only targeting POSIX systems anyway.

  • Related