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.