2010-11-29 18 views
1

我倾向于使用以下作为我的标准线程模型,但也许它不是一个很好的模型。人们有什么其他建议或者他们认为这样做的建议很好?这不是高性能的互联网服务器,虽然性能有时非常关键,在这种情况下,我使用异步网络方法和重用缓冲区,但它是相同的模型。线程:网络线程,gui线程,后端线程邮局中介类一个好的设置?

有一个gui线程来运行gui。

有一个后端线程可以处理任何计算密集型的任何事情(基本上gui可以传递的任何东西都不会很快运行),并且负责解析和处理传入消息或gui动作。

有一个或多个网络线程负责在必要时将输出发送到peices,从各个套接字接收数据包并将它们重新组合成消息。

有一个中介静态类用作联网和后端线程之间的中介。它充当邮局。需要发送的消息通过后端线程发布,网络线程检查此类的“发件箱”以查找消息,以便在该类的静态“收件箱”中发送和发送任何传入消息(不管它们到达哪个套接字来自,尽管该信息与传入的消息一起发布),后端线程检查哪些信息以从其他应用机器上发现消息。

gui /后端线程接口往往是更特设的,应该有自己的邮局像班或一些替代中介?

关于此线程设置的任何意见/建议?

回答

1

我主要关心的是,你并不想锁定自己只有一个后端线程的想法。我的正常模型是首先使用MVC,确保我使用的所有数据结构对于线程环境来说本质上不是安全的,避免单例,然后配置文件就像疯了一样,在尝试最小化数字时将事情分开我正在利用的条件变量。对于长时间的异步任务,我更喜欢产生一个新的进程,特别是如果它可能想让操作系统给予不同的优先级。