Sử dụng PulseAll
khi bạn muốn đánh thức nhiều chủ đề, bởi vì điều kiện mà chúng đang đợi hiện có thể được thực hiện cho nhiều hơn một chuỗi. (Việc chờ gần như luôn luôn được liên kết với một điều kiện - bạn nên thường xuyên kiểm tra điều kiện đó trong một vòng lặp while
.)
Sử dụng Pulse
khi bạn chỉ muốn đánh thức một chủ đề, bởi vì chỉ có một luồng sẽ thực sự hữu ích công việc.
Để cung cấp hai điểm tương tự:
Hãy tưởng tượng bạn đã có một máy in duy nhất. Chỉ có một người có thể sử dụng nó tại một thời điểm, vì vậy nếu bạn có rất nhiều người chờ đợi, bạn gửi cho họ tất cả để ngủ - nhưng bạn chỉ đánh thức một người lên khi máy in trở nên miễn phí. Điều này phản ánh việc sử dụng Pulse
.
Bây giờ hãy tưởng tượng bạn điều hành một cửa hàng. Trong khi bạn đóng cửa, khách hàng chờ đợi bên ngoài cửa hàng. Khi bạn mở cửa hàng, bạn không chỉ muốn thức dậy một khách hàng - tất cả họ có thể đến ngay bây giờ. Điều này phản ánh việc sử dụng PulseAll
.
Nguồn
2009-03-23 21:45:15
Nhận xét thông minh: 'Pulse' gây ra một vấn đề,' PulseAll' gây ra mọi vấn đề. Bạn thực sự nên sử dụng 'ManualResetEvent' hoặc' AutoResetEvent'. –