Theo tiêu đề. Tôi có thể sử dụng std::atomic<>
trong trình xử lý tín hiệu hay không sig_atomic_t
cung cấp các tính năng trình biên dịch khác?Là sig_atomic_t và std :: nguyên tử <> hoán đổi cho nhau
Trả lời
n3376 1,9/6
Khi xử lý của máy trừu tượng bị gián đoạn bởi nhận được một tín hiệu, các giá trị của các đối tượng mà là không
- kiểu std dễ bay hơi :: sig_atomic_t cũng không phải
- đối tượng nguyên tử không khóa (29.4)
không được chỉ định trong khi thực hiện xử lý tín hiệu và giá trị của bất kỳ đối tượng nào không nằm trong một trong hai loại hai danh mục này được sửa đổi bởi trình xử lý trở nên không xác định.
Khóa miễn 29,4/1,2
Các ATOMIC _..._ macro LOCK_FREE chỉ là tài sản của các loại nguyên tử tương ứng lock-free, với các biến thể có chữ ký và unsigned nhóm lại với nhau. Các thuộc tính cũng áp dụng cho các chuyên ngành tương ứng (một phần) của mẫu nguyên tử. Giá trị 0 cho biết các loại không bao giờ không khóa. Giá trị 1 cho biết các loại đôi khi không có khóa. Giá trị 2 cho biết các loại luôn không có khóa.
Chức năng atomic_is_lock_free (29.6) cho biết đối tượng có khóa không. Trong bất kỳ chương trình nào được thực hiện , kết quả của truy vấn không khóa sẽ nhất quán cho tất cả các con trỏ cùng loại.
- 1. ++ nguyên tử cho std :: nguyên tử <int>
- 2. std :: nguyên tử <int> sụt lần và so sánh
- 3. Liệu std :: nguyên tử <std::string> có hoạt động phù hợp không?
- 4. Tại sao Func <> và Expression <Func<>> Hoán đổi cho nhau? Tại sao một người làm việc trong trường hợp của tôi?
- 5. Hoán đổi nguyên tử trong GNU C++
- 6. Chuyển đổi std :: vector <std :: vector <double>> đại diện cho mảng 2D thành cv :: Mat
- 7. Nên std :: nguyên tử <int*> :: tải đang làm một vòng lặp so sánh và trao đổi?
- 8. Nguyên tắc thiết kế sau std :: ratio <>
- 9. Sự khác nhau giữa std :: multimap <key, value> và std :: map <key, std :: set <value>>
- 10. Chức năng hoán đổi nguyên tử sử dụng gcc nguyên tử dựng sẵn
- 11. C++ 11: viết hàm khởi tạo bằng nguyên tử <bool> nguyên tử?
- 12. vector <T> :: hoán đổi và đối tượng tạm thời
- 13. Chuyển đổi std :: string thành std :: vector <char>
- 14. Trong khai báo "std :: vector <X> f();", là "std :: vector <X>" một instantiation?
- 15. Danh sách hoán đổi <> các phần tử có C# sử dụng LINQ
- 16. Hoán đổi hai mục trong Danh sách <T>
- 17. Sự khác nhau giữa <a_element /> và <a_element xsi: nil = "true" /> là gì?
- 18. Sắp xếp một std :: vector <std :: pair <std :: string, bool >> bởi chuỗi?
- 19. std :: danh sách <std :: unique_ptr <T>>: đi qua nó xung quanh
- 20. std :: hoán đổi lạ với G ++
- 21. Tên toán tử SQL cho "<>" là gì?
- 22. Tôi có phải sử dụng nguyên tử <bool> cho biến bool "thoát" không?
- 23. Sự khác nhau giữa <? super E> và <? extends E> là gì?
- 24. XSLT: sự khác nhau giữa <copy-of> và <apply-templates> là gì?
- 25. std :: is_default_constructible <T> lỗi, nếu constructor là tin
- 26. Sự khác nhau giữa HashSet <T> và Danh sách <T> là gì?
- 27. Sự khác nhau giữa <% %> và <%=%> là gì?
- 28. Sự khác nhau giữa Danh sách <string> và IEnumerable <String> là gì?
- 29. Sự khác nhau giữa "<>" và "! =" Là gì?
- 30. Bản sao nhanh của `std :: vector <std :: uint8_t>`
Để hoàn thành, điều đó có nghĩa là bạn có thể sử dụng biến 'std :: atomic x;' * nếu * 'x.is_lock_free()' là đúng. –
Cảm ơn cả hai ... – James