Tôi đọc ở nhiều nơi Boost.Signals không phải là chủ đề an toàn nhưng tôi không tìm thấy nhiều chi tiết hơn về nó. Trích dẫn đơn giản này không nói nhiều lắm. Hầu hết các ứng dụng ngày nay đều có các luồng - ngay cả khi chúng cố gắng đơn luồng, một số thư viện của chúng có thể sử dụng các luồng (ví dụ: libsdl).Boost: chính xác thì không phải là luồng an toàn trong Boost.Signals?
Tôi đoán việc triển khai không có vấn đề với các chủ đề khác không truy cập vào vị trí. Vì vậy, nó là ít nhất threadsafe trong ý nghĩa này.
Nhưng chính xác những gì hoạt động và những gì sẽ không hoạt động? Nó sẽ làm việc để sử dụng nó từ nhiều chủ đề miễn là tôi không bao giờ truy cập nó cùng một lúc? I E. nếu tôi xây dựng các mutex của riêng mình xung quanh khe cắm?
Hoặc tôi có buộc phải sử dụng vị trí chỉ trong chuỗi đó mà tôi đã tạo nó không? Hoặc nơi tôi sử dụng nó lần đầu tiên?
Đã lâu rồi ... câu trả lời của tôi có hợp lý không? Về cơ bản các thư viện tín hiệu * chính nó * sẽ không sụp đổ bất kể các cuộc gọi bạn thực hiện từ bất kỳ chủ đề miễn là chúng là "hợp lệ" ... nhưng bạn chịu trách nhiệm về ngữ nghĩa trong mã của riêng bạn. – HostileFork
Yea nó có ý nghĩa nhưng nó không thực sự trả lời tất cả các câu hỏi của tôi. :) Về cơ bản bạn nói "tra cứu nó trong nguồn". Tôi sẽ làm điều đó tại một số điểm sau đó và sau đó đăng tất cả các câu trả lời chính xác cho câu hỏi của tôi ở đây. – Albert
Bạn đã hỏi "chính xác những gì hoạt động và những gì sẽ không hoạt động?" Tôi cảm thấy đó là điều cần thiết hơn là mổ xẻ những câu hỏi cụ thể hẹp hơn của bạn.(Những câu trả lời là "Có: nếu bạn bảo vệ với một mutex tốt, nhưng có thể không cần thiết nếu ngữ nghĩa của các khe của bạn sao cho nhiều hơn một luồng có thể chạy chúng cùng một lúc; nó giống như gọi bất kỳ hàm nào khác từ nhiều chuỗi" và "Không: bạn không bị giới hạn chỉ sử dụng các vị trí trong chuỗi mà chúng được tạo.") – HostileFork