【发布时间】:2010-02-19 05:27:57
【问题描述】:
我有以下情况:
该程序有一个读取器和一个写入器线程到一个外部应用程序的套接字。
读者和作者需要在协调的循环中工作。
写入器向套接字发送动态数量的消息 (x),读取器需要从套接字读取响应。每个周期的消息数量超过 5 到 10k。消息的接收顺序与发送的顺序不同,并且消息布局清晰,因此可以确定单个消息。
读者需要阅读 x 条消息,然后在 .阅读器完成读后处理后,作者需要重新开始向套接字发送。
从你的 pov 中最快的同步是什么?
- 使用 书面信息的数量? (即使套接字上没有 FIFO 保证)
- 使用经典的锁定对象?
-
对具有写入消息数量的整数使用原子事务,并让编写者只更新一次整数?
我是否错过了任何其他快速同步机制?
【问题讨论】:
-
消息需要按顺序处理吗?前 x 条消息是否会影响接下来的 x 条消息?您确定一条消息在哪里结束和下一条消息从哪里开始的机制是什么?
-
我已经避免了任何其他共享状态——因此作者需要开始一个循环,而读者需要结束一个循环。其他依赖项不共享。我觉得我需要编写一些性能测试代码,这些代码将与手工制作的模拟对象一起处理套接字通信,但也许还有其他同步的想法。
标签: c# performance multithreading synchronisation