146
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ
// Thu lấy chốt trên đối tượng consoleGate.
lock (consoleGate) {
// Tạo và khởi chạy ba tiểu trình mới
// (chạy phương thức DisplayMesssage).
for (int count = 0; count < 3; count++) {
(new Thread(new ThreadStart(DisplayMessage))).Start();
}
}
Thread.Sleep(1000);
// Đánh thức một tiểu trình đang chờ.
Console.WriteLine("{0} : {1}",
DateTime.Now.ToString("HH:mm:ss.ffff"),
"Press Enter to pulse one waiting thread.");
Console.ReadLine();
// Thu lấy chốt trên đối tượng consoleGate.
lock (consoleGate) {
// Pulse một tiểu trình đang chờ.
Monitor.Pulse(consoleGate);
}
// Đánh thức tất cả các tiểu trình đang chờ.
Console.WriteLine("{0} : {1}",
DateTime.Now.ToString("HH:mm:ss.ffff"),
"Press Enter to pulse all waiting threads.");
Console.ReadLine();
// Thu lấy chốt trên đối tượng consoleGate.