我很难理解我将如何去做这件事,我试过寻找例子,但我真的找不到我需要的东西。
所以我有20个线程。
每个线程循环和每 x 次循环它们应该在服务器上启动一个 changeip 批处理文件。
但是我只希望完成一次,而不是重复 x 个线程。我将如何使它只在每个线程上执行一次而不是一次。
我很难理解我将如何去做这件事,我试过寻找例子,但我真的找不到我需要的东西。
所以我有20个线程。
每个线程循环和每 x 次循环它们应该在服务器上启动一个 changeip 批处理文件。
但是我只希望完成一次,而不是重复 x 个线程。我将如何使它只在每个线程上执行一次而不是一次。
首先,你为什么认为你需要 20 个线程?大多数人并不真正了解线程,并认为更多的线程意味着他们的软件运行得更快。可能是这样,但可能不是。特别是,您只有 1-n 个内核,这很可能不是 20 个内核。所以您只能以最大执行,但同时拥有多个内核。
但是,要回答您的实际问题,这与线程本身无关,但线程确实使问题复杂化。
你在这里有几个问题。第一个是,每个线程在自己的时间片中运行,您将获得一个线程在一个片中执行 10 个循环,另一个线程可能只执行 5.. 给定任何特定的时间块,您的循环将逐渐变得不同步他们执行了很多次。这可能不是真正的问题,但如果是,您将需要找到一种同步线程的方法,例如等待所有循环完成,然后再移动到下一组循环。
所以下一个问题是......当你说每个 x 循环(比如说 20 个)时,哪些线程循环?第一个做20的?什么时候都做了20?还是您的意思是跨所有线程的 20 个循环(即,每个循环都执行一次?)
也许最简单的方法是拥有一个静态变量,您可以通过 InterlockedIncrement 方法控制它,以防止多个线程同时尝试访问它。每个线程都会增加数字,当它达到 20 时,其中一个线程(当时正在增加的线程)执行您的批处理文件。