问题: 我有大量的大消息要通过网络序列化和发送。 我想最大限度地提高性能,所以我正在考虑为消息序列化创建多个线程,以及一个用于发送数据的线程。想法是根据网络性能动态确定序列化的线程数。如果数据快速发送且序列化是瓶颈,则添加更多线程以提升序列化。如果网络速度较慢,请使用较少的线程,如果发送缓冲区已满,则完全停止。
任何想法如何做到这一点?
决定是否需要更多或更少线程的最佳算法是什么?
如何正确连接多个线程的序列化结果?
请回答以下任何问题?感谢
答案 0 :(得分:2)
可以将其视为生产者/消费者问题,在Fx4中,您可以使用BlockingCollection。
但坦率地说,我希望(网络)I / O成为瓶颈,而不是序列化。你必须衡量。
答案 1 :(得分:1)
您可以将数据块化为数据包并将数据包放入队列中。查看网络性能的过程将查看队列并确定要发送的数据包数。此实现的缺点是您需要在接收端组装数据包,而这些数据包可能无法以正确的顺序接收。