C ++ std :: atômico vs. Boost atômico
Na minha aplicação, tenho uma variável int e uma bool, que são acessadas (várias gravações / leituras) por vários threads. Atualmente, estou usando dois mutexes, um para int e outro para bool para proteger essas variávei
Eu ouvi falar sobre o uso de variáveis atômicas e operadores para escrever um programa multithread sem bloqueio. Minhas perguntas são
Qual é a definição de variáveis atômicas e operadore Qual é a principal diferença entrestd :: atomic e boost / atomic.hpp? Qual é o mais padrão ou popular? Essas bibliotecas dependem da plataforma? Atualmente, estou usando o gnu gcc 4.6 no Linux, mas, idealmente, deve ser multiplataforma. Ouvi dizer que a definição de "atômico" também depende do hardware. Alguém pode explicar isso também? Qual é a melhor maneira de compartilhar uma variável bool entre vários threads? Eu preferiria não usar o "voláti "palavra-chave.Esses códigos são seguros para threads?
double double_m; // double_m is only accessed by current thread.
std::atomic<bool> atomic_bool_x;
atomic_bool_x = true && (double_m > 12.5);
int int_n; // int_n is only accessed by current thread.
std::atomic<int> atomic_int_x;
std::atomic<int> atomic_int_y;
atomic_int_y = atomic_int_x * int_n;