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

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() {