.NET多线程异步

时间:2013-07-13 17:52:28

标签: .net multithreading

我无法理解我将如何做到这一点,我已经尝试寻找示例,但我找不到我需要的东西。

所以我已经说了20个帖子。

每个线程循环并且每x个循环它们应该在服务器上启动一个changeip批处理文件。

但是我只希望这样做一次,而不是重复x个线程。如何在每个线程上执行一次而不执行一次。

1 个答案:

答案 0 :(得分:4)

首先,为什么你认为你需要20个线程?大多数人并不真正了解线程,并认为更多的线程意味着他们的软件运行得更快。可能是这种情况,但可能不是。特别是,你只有1-n核心,很可能不是20核心。所以你只能在最大值下执行,无论你同时拥有多少核心。

然而,要回答你的实际问题,这与线程本身没什么关系,但是线程确实使它复杂化。

这里有几个问题。第一个是,每个线程在它自己的时间片中运行,你将获得一个线程在一个片中执行10个循环,另一个线程可能只执行5 ..给定任何特定的时间块,你的循环将逐渐变得不同步很多次他们已经执行了。这可能不是一个实际问题,但如果是,你将需要找到一种同步线程的方法,例如在移动到下一组循环之前等待所有循环完成。

所以下一个问题是..当你说每个x循环(假设20)时,哪些线程循环?第一个做20个?什么时候都做了20?或者你的意思是所有线程中有20个循环(即每个都执行一次?)

也许最简单的方法是拥有一个静态变量,您可以通过InterlockedIncrement方法控制该变量,以防止多个线程同时尝试访问它。每个线程递增数字,当它达到20时,其中一个线程(当时正在递增的线程)执行批处理文件。