我目前有一个程序,它使用繁忙的池和一堆线程来监视对象,进程数据和传递数据的状态。这很难管理/浪费cpu时间。我正在寻找删除线程和使用信号/槽,因为我的代码没有“阻止”。
所以我会发信号通知我的物体状态,这很容易。更难的是我还想使用插槽来发送数据信号,然后传递数据。
基本上: A-> SignalIHAVEDATA(B.slot()和C.slot()) B和C可能无法处理数据。所以我应该在B和C中保留一个标志,告诉他们他们是数据。或者我应该每隔X ms重新发信号直到数据被取出。
还..
让我们说B接受数据。在B.Slot内部,它需要handleToA-> getData(); &安培;&安培;处理数据? &安培;&安培; signalAnotherThing。
如果我发出signalA并且在slotA内我发出信号B将在slotA返回之前处理slotB吗? (如果这个链很长,可能需要一段时间才能返回slotA?)
感谢您的帮助:)
答案 0 :(得分:4)
最佳信号&插槽库当然是Boost.Signal2。 它是可移植的,线程安全的,基于模板的,只有标题。你会爱上它。
是的。我知道你在一年前问过这个问题,但我根本无法解决这个问题。