【发布时间】:2013-05-14 04:22:40
【问题描述】:
我正在查看此站点以获取 threads。 我一直在使用代码来回答“CountdownEvent 是否停止所有线程?”这个问题。 我得到的答案是否定的。然后我决定使用传递给 CountdownEvent 的数字。这是我的代码
namespace ThreadPractice
{
class Program
{
static CountdownEvent CountDown = new CountdownEvent(4);
static void Main()
{
new Thread(() => SaySomething("I am Thread one.")).Start();
new Thread(() => SaySomething("I am thread two.")).Start();
new Thread(() => SaySomethingElse("Hello From a different Thread")).Start();
new Thread(() => SaySomething("I am Thread Three.")).Start();
CountDown.Wait();
Console.Read();
}
static void SaySomething(string Something)
{
Thread.Sleep(1000);
Console.WriteLine(Something);
CountDown.Signal();
}
static void SaySomethingElse(string SomethingElse)
{
Thread.Sleep(1000);
Console.WriteLine(SomethingElse);
}
}
}
我预计调用 SaySomethingELse() 的线程会执行,但其他线程也会执行,即使只调用了四个信号。
为什么要这样做?
谢谢,
dhoehna
【问题讨论】:
-
您为什么希望其他线程不执行?只有您的主线程使用
Wait。其他人只是发出信号倒计时。 -
我希望所有线程都能运行并打印一些东西,然后让您的程序在
CountDown.Wait()调用上永远阻塞。倒计时的重点是阻塞一个线程,直到一堆其他线程发出信号表明可以继续安全。 -
@dlev 问题是我忘记在所有线程上调用等待。我认为等待是一个笼统的陈述。
标签: c# multithreading countdownevent