【发布时间】:2015-10-29 03:56:08
【问题描述】:
我有一个监听 TCP 客户端的 C# 服务器应用程序。每个客户端在服务器上创建一个新线程,它会每隔 10ms 向服务器传递一个整数值。
现在我需要从所有客户端获取最大整数并继续广播它,所以我认为问题是如何从不同线程中获取所有值并将它们进行比较?
【问题讨论】:
-
线程将一个值传递给您的比较方法 -
ShowMaxValue(maxValue)然后将其与自己的总数进行比较 -if (maxValue > total) { total = maxValue; } -
@Ben - 你需要某种形式的锁定来使它工作 - 否则这是一个等待发生的竞争条件。
-
@Enigmativity 等等。但在 OP 发布他们目前拥有的东西之前,我们可以提供许多东西作为解决方案。因为我们不知道他们的代码是什么,所以我们真的无法提供可行的解决方案。
-
您是指每个人发送值的一个周期内最大的值,还是所有发送者的最大值?
-
谢谢大家的回复,我希望所有发件人都能获得最大的价值。我还没有任何代码,我需要知道如何开始我的代码......我只是认为每个线程都有可能有自己的变量 a[i] 来存储值,我可以创建另一个线程来循环获取最大值,例如 int maxium = max(a)
标签: c# multithreading