145
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ
hai người dùng nhấn Enter,
Monitor.PulseAll
sẽ được gọi để giải phóng tất cả các tiểu trình
đang chờ còn lại.
using System;
using System.Threading;
public class ThreadSyncExample {
private static object consoleGate = new Object();
private static void DisplayMessage() {
Console.WriteLine("{0} : Thread started, acquiring lock...",
DateTime.Now.ToString("HH:mm:ss.ffff"));
// Thu lấy chốt trên đối tượng consoleGate.
try {
Monitor.Enter(consoleGate);
Console.WriteLine("{0} : {1}",
DateTime.Now.ToString("HH:mm:ss.ffff"),
"Acquired consoleGate lock, waiting...");
// Đợi cho đến khi Pulse được gọi trên đối tượng consoleGate.
Monitor.Wait(consoleGate);
Console.WriteLine("{0} : Thread pulsed, terminating.",
DateTime.Now.ToString("HH:mm:ss.ffff"));
} finally {
Monitor.Exit(consoleGate);
}
}
public static void Main() {