Tôi có một câu hỏi về an toàn luồng của std :: set.Là C++ std :: đặt thread-safe?
Theo như tôi biết tôi có thể lặp qua tập hợp và thêm/xóa thành viên và điều đó không làm mất hiệu lực trình vòng lặp.
Nhưng xem xét sau đây kịch bản:
- chủ đề 'A' lặp trên một tập hợp các shared_ptr < Loại>
- chủ đề 'B' thỉnh thoảng bổ sung thêm các mục vào thiết lập này.
Tôi đã trải nghiệm các segfaults khi chương trình chạy và tôi không chắc chắn tại sao điều này xảy ra. Thiếu an toàn chủ đề có phải là nguyên nhân không?
cập nhật tập hợp không làm mất hiệu lực các trình vòng lặp ..... –
Thực tế, trạng thái chuẩn bổ sung hoặc xóa khỏi tập hợp std :: không làm mất hiệu lực bất kỳ trình vòng lặp nào của nó (với trình vòng lặp trỏ đến đối tượng bị xóa là ngoại lệ rõ ràng). – suszterpatt
Cảm ơn lời bình luận, tôi đã hoàn toàn thất bại. Mặc dù tôi phải nói, từ quan điểm của một người thực hiện, đây là một yêu cầu thực sự kỳ lạ. –