Tôi có một chương trình C++ trên Linux (CentOS 5.3) sinh sản nhiều chủ đề trong một vòng lặp vô hạn để thực hiện một công việc và ngủ cho một số phút. Bây giờ tôi phải hủy bỏ các chủ đề đang chạy trong trường hợp một thông báo cấu hình mới xuất hiện và bắt đầu một loạt các chủ đề mới, mà tôi đã sử dụng pthread_cancel. Những gì tôi quan sát được, các chủ đề không bị ngừng ngay cả sau khi nhận được chỉ định hủy bỏ, thậm chí một số chủ đề ngủ đã được đưa ra sau khi giấc ngủ đã được hoàn thành.Hủy bỏ một chủ đề bằng cách sử dụng pthread_cancel: tốt thực hành hoặc xấu
Vì hành vi không mong muốn, việc sử dụng lệnh pthread_cancel trong kịch bản đã nêu lên đặt ra câu hỏi về thực hành tốt hay xấu.
Vui lòng nhận xét về cách sử dụng pthread_cancel trong kịch bản được đề cập ở trên.
+1 để tránh hủy, đó là cách nhanh nhất để rò rỉ bộ nhớ và tệ hơn. Hãy hỏi một cách lịch sự thay vào đó :) –
Có vẻ như tôi phải thay đổi logic để chấm dứt chuỗi bằng cách sử dụng cờ được chia sẻ. Nhưng trên lưu ý khác chương trình của tôi đã có chủ đề với nhà nước hủy bỏ thiết lập để ASYNCHRONOUS mà, tôi tin rằng, có liên quan đến chấm dứt ngay lập tức của chủ đề sau khi gọi xử lý dọn dẹp tương ứng. – Mandar
@ user584631: Trang hướng dẫn sử dụng pthreads nói rằng khi chế độ được đặt thành không đồng bộ, việc hủy có thể là ngay lập tức, nhưng hệ thống không bắt buộc phải làm như vậy. –