Tôi đang xem xét sử dụng các chủ đề C++ 0x trong ứng dụng của tôi thay vì các chủ đề Boost. Tuy nhiên, tôi không chắc chắn làm thế nào để reimplement những gì tôi có với tiêu chuẩn C + + 0x chủ đề vì họ dường như không có một phương pháp interrupt()
.Làm thế nào để ngắt chuỗi chờ C++ 0x?
thiết lập hiện tại của tôi là:
- a thread chủ quản lý công việc;
- một số chuỗi công việc thực hiện các lệnh của chủ.
Công nhân gọi wait()
trên ít nhất hai biến điều kiện khác nhau. Thạc sĩ có trạng thái "hết thời gian": trong trường hợp này, nó yêu cầu tất cả các nhân viên dừng lại và đưa ra bất kỳ kết quả nào họ nhận được sau đó. Với chủ đề Boost master chỉ sử dụng interrupt_all()
trên một nhóm chủ đề, khiến cho người lao động ngừng chờ đợi. Trong trường hợp họ không chờ đợi tại thời điểm này, chủ cũng đặt cờ bool
mà người lao động kiểm tra định kỳ.
Tuy nhiên, trong C++ 0x std::thread
Tôi không thấy bất kỳ sự thay thế nào cho interrupt()
. Tôi có nhớ điều gì không? Nếu không, làm thế nào tôi có thể thực hiện các chương trình trên để công nhân không thể ngủ mãi mãi?
Tôi nghĩ rằng tôi sẽ tiếp tục sử dụng chủ đề Boost sau đó. Họ cũng bị lỗi, nhưng ít nhất tôi có một giải pháp ổn định cho họ. – doublep