【发布时间】:2011-06-17 11:23:33
【问题描述】:
我有一个接收流数据的套接字连接。每天的消息数约为 1.5 亿条。收到消息后,我需要处理它们。由于消息数量很大。我正在对消息处理代码进行多线程处理。现在我有 8 个线程,有 8 个消息队列。套接字进程会将消息按顺序放入这些队列中。每个进程只需要处理自己队列中的消息。
我现在的问题是我的队列已满。
我应该有更多的队列吗? 所有线程都将使用同步方法写入共享对象。更多的队列是否会相互影响并使事情变得更糟?
我应该有更大的缓冲区吗? 这些似乎是安全的,但我真的想更快地处理消息。
我应该改变我的设计吗? 有什么好的推荐吗?要遵循的指南?
欢迎任何cmets。
【问题讨论】:
-
知道该做什么的关键是找出时间花在哪里:调度消息、处理消息和写入共享对象的同步方法。只有在大部分时间都花在处理消息上时,更多线程才会起作用。你能做一些分析吗?
-
我会考虑有多个消费者的单个队列。消费者将是一个线程,然后您将调整线程数以有效地使用。我看不到多队列,循环给你什么......
标签: java c++ multithreading stream parallel-processing