C#中的多线程序列化

时间:2011-01-19 21:23:03

标签: c# serialization network-programming threadpool

问题: 我有大量的大消息要通过网络序列化和发送。 我想最大限度地提高性能,所以我正在考虑为消息序列化创建多个线程,以及一个用于发送数据的线程。想法是根据网络性能动态确定序列化的线程数。如果数据快速发送且序列化是瓶颈,则添加更多线程以提升序列化。如果网络速度较慢,请使用较少的线程,如果发送缓冲区已满,则完全停止。

任何想法如何做到这一点?

决定是否需要更多或更少线程的最佳算法是什么?

如何正确连接多个线程的序列化结果?

请回答以下任何问题?感谢

2 个答案:

答案 0 :(得分:2)

可以将其视为生产者/消费者问题,在Fx4中,您可以使用BlockingCollection。

但坦率地说,我希望(网络)I / O成为瓶颈,而不是序列化。你必须衡量。

答案 1 :(得分:1)

您可以将数据块化为数据包并将数据包放入队列中。查看网络性能的过程将查看队列并确定要发送的数据包数。此实现的缺点是您需要在接收端组装数据包,而这些数据包可能无法以正确的顺序接收。