【发布时间】:2016-11-08 13:45:29
【问题描述】:
我使用 QSharedMemory 和 QSystemSemaphore 来组织多个进程之间的事件交换。 QSharedMemory 存储接收器的数量和事件数据。接收者在 QSystemSemaphore::acquire() 中等待。发送者通过 QSystemSemaphore::release([接收者数量]) 通知他们。
除了在共享内存中引入标志“real”/“fake”并随后在终止进程中生成“fake”事件之外,还有什么方法可以优雅地终止接收进程?
【问题讨论】:
-
你的问题表述不清。您的意思是当您在线程上调用
terminate时,线程不会终止并卡在QSystemSemaphore::acquire()中? -
这是一个 XY 问题:您必须让我们看到森林,而不是单个树木。你到底在做什么?很可能有一个更简单的解决方案来解决您的问题 - 无论那个问题到底是什么。请编辑问题以阐明您的系统结构,或许可以创建一个简短的测试用例。你可以easily launch multiple processes from one
main.cpp!。
标签: c++ linux multithreading qt semaphore