文件名称:GCC-Semaphores
文件大小:2KB
文件格式:ZIP
更新时间:2024-05-04 14:40:48
C++
GCC的信号量实现 据我所知,此示例应根据信号量的语义唤醒所有线程。 但是,使用我的gcc本地副本(11.0.1 commit a18ebd6c439),尽管重复发出了信号量,但它仅唤醒了一个线程。 显然,这是一个人为的最小示例,对于该示例,我可以运行wakeSemaphore.release(threadCount)行,而不必多次唤醒该信号灯。 但是对于另一个项目,这是不可行的,因为我需要根据需要单独唤醒线程。 用等效的POSIX信号量实现替换std::counting_semaphore实现也可以解决此问题。 鉴于标准规定 ,并且我观察到睡眠线程的counter值> = 1却仍保持睡眠状态,因此我认为此实现是非标准的-符合。 我认为问题在于,所有唤醒事件在任何线程都被唤醒之前会合并为一个,因此只有一个线程会观察到唤醒事件。 支持这一点的证据是,在每个信号量释放之间启动等待会允许所
【文件预览】:
GCC-Semaphores-master
----source.cpp(1KB)
----Makefile(62B)
----README.md(1KB)