我现在正在为服务器客户端应用程序工作(仅用于学习目的),并且正在尝试获取有关此应用程序中有关线程的设计决策的信息。多线程vs单线程
目前我有一个线程负责与客户端的所有非阻塞io。当它接收到任何数据时,它将它发送给一个工作线程,该线程从这些字节中创建一个“指令集”,然后相应地对其执行操作。但是,根据指令集,它可以对任意数量的数百个对象起作用(每个对象将在2到12个可以与之交互的客户端之间加盖)。我想知道是否应该处理同一个线程上的所有指令集,并且在处理每个集合时阻塞,或者如果我应该为每个对象创建单独的线程,然后将每个接收到的指令集传递给给定的对象线程处理。
我的问题归结为什么时候(如果有的话)有更多不活动的线程正在等待数据减慢系统,相比之下,有一个工作线程处理所有数据(以及处理每条指令时的块组)。
如果我为每个对象创建了一个单独的线程,那么我认为它可以增加并发性,因为一旦主工作线程创建了一个指令集,它就可以传递它来处理,并且无意地开始处理下一个指令系统。
但是,我一直听说如何创建和管理线程有一个底层成本,因为操作系统必须管理它们。因此,如果我为最多可以有2个客户端进行交互的对象创建一个线程,管理它的底层成本会否定它的并发利益,只有2个客户端可以利用该并发?
与往常一样,任何意见/文章不胜感激:)
这是一个更优雅的解决方案,然后我就是想象。谢谢:) – vimalloc 2010-07-28 00:31:33