143
Chương 4: Tiểu trình, tiến trình, và sự đồng bộ
public static void Main() {
// Tạo một thể hiện ủy nhiệm ThreadStart
// tham chiếu đến DisplayMessage.
ThreadStart method = new ThreadStart(DisplayMessage);
// Tạo một đối tượng Thread và truyền thể hiện ủy nhiệm
// ThreadStart cho phương thức khởi dựng của nó.
Thread thread = new Thread(method);
Console.WriteLine("{0} : Starting second thread.",
DateTime.Now.ToString("HH:mm:ss.ffff"));
// Khởi chạy tiểu trình thứ hai.
thread.Start();
// Dừng cho đến khi tiểu trình thứ hai kết thúc,
// hoặc Join hết hiệu lực sau 3 giây.
if (!thread.Join(3000)) {
Console.WriteLine("{0} : Join timed out !!",
DateTime.Now.ToString("HH:mm:ss.ffff"));
}
// Nhấn Enter để kết thúc.
Console.WriteLine("Main method complete. Press Enter.");
Console.ReadLine();
}
}
8.
8.
Đ ng b hóa quá trình th c thi c a nhi u ti u trình
ồ
ộ
ự
ủ
ề ể
Đ ng b hóa quá trình th c thi c a nhi u ti u trình
ồ
ộ
ự
ủ
ề ể
Bạn cần phối hợp các hoạt động của nhiều tiểu trình để bảo đảm sử dụng hiệu
quả các tài nguyên dùng chung, và bạn không làm sai lạc dữ liệu dùng chung khi
một phép chuyển ngữ cảnh tiểu trình (thread context switch) xảy ra trong quá
trình thay đổi dữ liệu.
Sử dụng các lớp
Monitor
,
AutoResetEvent
,
ManualResetEvent
, và
Mutex
(thuộc
không gian tên
System.Threading
).