gpt4 book ai didi

c# - 多线程:我什么时候使用 Join?

转载 作者:IT王子 更新时间:2023-10-29 03:44:51 27 4
gpt4 key购买 nike

我在网上看到它说我使用 myThread.Join(); 当我想阻塞我的线程直到另一个线程完成时。 (我不明白的一件事是如果我有多个线程会怎样)。

但一般来说,我只是不知道何时使用 .Join() 或它有用的条件。任何人都可以像我是四年级学生一样向我解释这个吗?非常简单易懂的解释会得到我的答案。

最佳答案

假设您想要启动一些工作线程来执行某种计算,然后对所有结果执行一些操作。

List<Thread> workerThreads = new List<Thread>();
List<int> results = new List<int>();

for (int i = 0; i < 5; i++) {
Thread thread = new Thread(() => {
Thread.Sleep(new Random().Next(1000, 5000));
lock (results) {
results.Add(new Random().Next(1, 10));
}
});
workerThreads.Add(thread);
thread.Start();
}

// Wait for all the threads to finish so that the results list is populated.
// If a thread is already finished when Join is called, Join will return immediately.
foreach (Thread thread in workerThreads) {
thread.Join();
}

Debug.WriteLine("Sum of results: " + results.Sum());

哦,是的,不要那样使用 Random,我只是想写一个最小的、容易理解的例子。如果您在时间上太接近地创建新的 Random 实例,它最终不是真正随机的,因为种子是基于时钟的。

关于c# - 多线程:我什么时候使用 Join?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com