gpt4 book ai didi

c++ - Poco Poco::NotificationQueue 未按预期工作

转载 作者:行者123 更新时间:2023-11-30 02:49:35 26 4
gpt4 key购买 nike

我开始使用 Poco::NotificationQueue。我注意到奇怪的行为,如果多个工作线程使用 waitDequeueNotification() 在同一个 NotificationQueue 上等待,则只有一个线程接收到从主线程。如果您运行 Poco 提供的 NotificationQueue.cpp 示例(在本例中是从 Visual Studio 完成的,但在 Linux 上测试时结果相同),这是显而易见的。

它的输出是:

Worker 1 got work notification 0
Worker 3 got work notification 2
Worker 2 got work notification 1
Worker 1 got work notification 3
Worker 3 got work notification 4
Worker 2 got work notification 5
...

预期结果为:

Worker 1 got work notification 0
Worker 3 got work notification 0
Worker 2 got work notification 0
Worker 1 got work notification 1
Worker 3 got work notification 1
Worker 2 got work notification 1
.....

这是一个错误还是什么?如果是这样,有什么解决方法吗?

最佳答案

这不是错误,但您的期望是错误的。

NotificationQueue 旨在通知Worker 线程有关要执行的任务。每个 Notification 代表一个要完成的工作。如果 Worker 1 已经在执行任务,为什么下一个空闲的 Worker 应该开始执行相同的任务?多线程的全部使用是工作的并行化。因此可以同时处理多个作业。

如果您希望每个线程接收相同的Notification,您应该使用NotificationQueue。相反,您应该使用 NotificationCenter观察者

有关更多信息,请参阅这些幻灯片:NotificationsEvents.pdf

关于c++ - Poco Poco::NotificationQueue 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21111543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com