Theo trang this, người ta có thể sử dụng các biến loại volatile sig_atomic_t
bên trong trình xử lý tín hiệu. Bây giờ câu hỏi của tôi là, ví dụ như một cái gì đó giống như mã sau vẫn còn nguyên tử và do đó không giới thiệu điều kiện chủng tộc?Sử dụng đúng sig_atomic_t dễ bay hơi
Giả sử rằng chúng tôi đang sử dụng bộ xử lý đa lõi (EDIT: chạy chương trình đa luồng). Hiện volatile sig_atomic_t
thậm chí làm việc cho hệ thống đa lõi ở nơi đầu tiên hay chúng ta nên sử dụng atomic<unsigned int>
của C++ 11 cho bộ xử lý tín hiệu trên hệ thống đa lõi (EDIT: chạy chương trình đa luồng)?
volatile sig_atomic_t a;
static void signal_handler(int sig, siginfo_t *si, void *unused)
{
int b;
................
b = ...;
a = a | b;
................
}
Câu hỏi của bạn đã được trả lời ("Có sig_atomic_t biến động thậm chí làm việc cho các hệ thống đa lõi ở nơi đầu tiên" - không), vì vậy bạn nên chấp nhận câu trả lời được cung cấp. – Bulwersator