【发布时间】:2015-02-17 03:44:53
【问题描述】:
我想在性能方面优化用 C++ 编写的消息解码器。解码器是完全按顺序设计的。实际并行化的概念很简单:
一旦新数据到达某个套接字,就告诉线程池运行另一个线程来解码接收到的消息。
在每个线程结束时,将调用一个方法(即发出一个Qt信号),并传递一个在处理过程中创建的对象。
我的问题是:处理的消息的长度和复杂性各不相同,因此线程完成的顺序可能与接收消息的顺序不同。换句话说,我需要在不使用线程安全容器的情况下就地序列化。
如何确保线程在完成后立即按正确的时间顺序调用上述方法,而不在线程安全容器中排队?
我的第一个想法是创建与线程池中的线程一样多的互斥锁,然后使用每个互斥锁将“已完成”信号从旧线程发送到新线程。
感谢任何cmets!
【问题讨论】:
-
你能解释一下,为什么不能使用线程安全容器吗?
标签: c++ qt concurrency message-queue