Tôi đang cố gắng tìm hiểu chính xác điểm hủy trong C++. Tôi đã đọc:Điểm hủy chính xác là gì?
man page và What are pthread cancellation points used for
Nhưng tôi vẫn còn một chút nhầm lẫn về điểm nhất định. Ví dụ, tôi đang sử dụng hàm write() của tệp. Rõ ràng đây là một điểm hủy bỏ. Vì vậy, khi tôi gọi write(), tôi có thể thấy rằng một luồng khác có thể bắt đầu xử lý (vì vậy mã của tôi chuyển từ chuỗi ghi sang luồng khác), điều này thường xảy ra khi bộ đệm ghi đầy và cần được làm trống trước khi ghi() có thể thành công/hoàn thành.
Nhưng trong tâm trí của tôi, đây không phải là hủy bỏ một chủ đề, nhưng chỉ đơn thuần là một chặn tạm thời/tạm ngưng, và không có chủ đề "dọn dẹp" để làm ...
Vì vậy, câu hỏi của tôi là, làm hủy điểm có liên quan đến "điểm chặn"? - chúng có thực sự giống nhau không, hoặc có sự khác biệt nào không? Bất kỳ mô tả "cấp cao nhất" nào rõ ràng về điểm hủy sẽ thực sự hữu ích.
Điểm hủy nói chung là bất kỳ điểm nào trong luồng điều khiển nơi điều khiển trả về lịch biểu. Chỉ có thể có nghĩa là "hủy bỏ" là không được lên kế hoạch một lần nữa, vì vậy bạn chỉ có thể hủy bỏ điều gì đó nếu bạn có thể ảnh hưởng đến các quyết định lên lịch. Các cuộc gọi hệ thống tạo thành một tương tác tự nhiên với trình lên lịch, mặc dù có thể có những người khác. –
@KerrekSB Với nhận xét này và câu trả lời của Bogdan V, tôi nghĩ rằng điều này thực sự có ý nghĩa với tôi bây giờ, cảm ơn :) –
Cảm ơn @KerrekSB cho một lời giải thích rõ ràng, ngắn gọn và vững chắc đề cập đến lịch trình. – ifelsemonkey