【发布时间】:2017-08-29 18:03:43
【问题描述】:
我有一个处理 zmq 消息的类。如果收到消息,则该类通知其观察者。这个观察者然后创建一个 boost::thread 来解析收到的 zmq 消息。消息被解析后,观察者启动另一个线程,然后执行解析的命令。
所以有一个观察者为每个传入的消息创建一个线程。如何确保创建的线程在解决消息后被安全销毁?还有在解析器线程中启动的线程会发生什么。最后也必须安全地销毁该线程。
我认为有一个简单的解决方案,但我缺乏多线程的经验,也不知道谷歌什么......
编辑: 当线程自己返回值时,我什至需要关心它们吗?
【问题讨论】:
-
我不知道 boost,但是为每条传入的消息创建一个新线程似乎很浪费。为什么不使用thread pool?
-
从 C++11 开始有一个标准的
std::thread。为什么不使用它?它有更好的文档记录,并且可以在任何符合标准的编译器上开箱即用。
标签: c++ multithreading boost