Tôi đã đọc một vài nguồn về phương pháp thích hợp để sủi bọt một tin nhắn từ một chuỗi đến tất cả các chủ đề khác để thoát ra một cách duyên dáng (mỗi luồng thực hiện quy trình thoát riêng của nó). Trong số này, tôi thích ý tưởng của một boolean nguyên tử toàn cầu có thể được gắn cờ từ bất kỳ luồng nào, và tất cả các luồng khác kiểm tra cờ này để thực hiện một thường trình thoát - khi tất cả các luồng được nối, luồng chính có thể thoát khỏi ứng dụng.Thoát hiệu quả từ ứng dụng đa luồng (chi tiết cụ thể)
Chủ đề tính toán hoàn toàn có thể sẽ được xử lý khác nhau, đúng không?
Tính năng này có hiệu quả và an toàn không? Có cách nào tốt hơn để làm điều này?
Cảm ơn!
âm thanh thông minh, nhưng tôi chỉ không thể lắc "này là cách quá hacky" cảm giác mỗi khi tôi đọc nó ... – Necrolis
Tôi sẽ thừa nhận nó không di động, nhưng hầu hết các giải pháp khác thực sự hạn chế những gì bên thứ ba mã bạn có thể sử dụng trong chuỗi của mình. Tôi sử dụng chủ đề rất nhiều cho mạng, và cần thư viện mạng của bên thứ ba (ví dụ, Indy) có thể được 'dừng' một cách an toàn. – Roddy
Tôi vẫn không hiểu được, ngay cả từ lời giải thích chi tiết hơn. Bạn sử dụng QueueUserAPC khi bạn muốn thoát khỏi bên trong một chủ đề và điều này cuối cùng gọi một chức năng mà ném một ngoại lệ và ngoại lệ này đạt đến tất cả các chủ đề? Các destructors được gọi như thế nào và hàm ngoại lệ ném như thế nào? (Toàn bộ khu vực lập trình này là mới đối với tôi) Cảm ơn! – oneminute