CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 146

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.