Articles of multithreading

ConcurrentDictionary Pitfall – As fábricas de delegates de GetOrAdd e AddOrUpdate são sincronizadas?

A documentação do ConcurrentDictionary não explícita estado, então eu acho que não podemos esperar que os delegates valueFactory e updateValueFactory tenham sua execução sincronizada ( de operações GetOrAdd () e AddOrUpdate () respectivamente ). Portanto, acho que não podemos implementar o uso de resources dentro deles que precisam de controle simultâneo sem implementar manualmente nosso […]

A boot da variável de membro estático C ++ é segura para thread?

De acordo com os resources a seguir, a boot da variável estática com escopo definido do C ++ (especialmente Visual C ++) não é thread-safe. Mas, variables ​​estáticas globais são seguras. Variáveis ​​estáticas thread-safe sem mutexing? http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx Então, está seguindo o código com variável de membro estático thread-safe? class TestClass { public: static MyClass m_instance; […]

Configuração Tamanho ideal do pool de threads

Qual é a diferença entre- newSingleThreadExecutor vs newFixedThreadPool(20) em termos de sistema operacional e ponto de vista de programação. Sempre que newSingleThreadExecutor meu programa usando newSingleThreadExecutor meu programa funciona muito bem e a latência de fim a fim (percentil 95) chega em torno de 5ms . Mas assim que eu começo a usar meu programa […]

Como definir o tamanho da pilha com o C ++ 11 std :: thread

Eu tenho tentado me familiarizar com a biblioteca std :: thread em C ++ 11, e cheguei a um obstáculo. Inicialmente eu venho de um fundo posix tópicos, e queria saber como se configura o tamanho da pilha do std :: thread antes da construção, como eu não consigo encontrar nenhuma referência para a realização […]

Depurando vários encadeamentos no eclipse

Em um método que estou depurando, estou gerando um novo thread. Eu preciso depurar a execução deste novo segmento em vez do segmento pai. Como posso fazer isso no eclipse?

é operador de atribuição ‘=’ atômico?

Estou implementando a comunicação entre threads usando a variável global. //global var volatile bool is_true = true; //thread 1 void thread_1() { while(1){ int rint = rand() % 10; if(is_true) { cout << "thread_1: "<< rint <<endl; //thread_1 prints some stuff if(rint == 3) is_true = false; //here, tells thread_2 to start printing stuff } […]

Quebre o paralelismo.

Como faço para sair de um loop paralelo ? Eu tenho uma declaração bastante complexa que se parece com o seguinte: Parallel.ForEach(ColorIndex.AsEnumerable(), new Action((ColorIndexHolder Element) => { if (Element.StartIndex = I) { Found = true; break; } })); Usando class paralela, posso otimizar esse processo de longe. Contudo; Eu não consigo descobrir como quebrar o […]

As atribuições de 64 bits em Java são atômicas em uma máquina de 32 bits?

Se eu tenho código assim – long x; x = 0xFFFFFFFFL; Se eu executar este código em uma máquina de 32 bits, é garantido que ele seja atômico ou é possível que um thread diferente, x, possa obter um valor incompleto / lixo?

Obter o status de std :: future

É possível verificar se um std::future terminou ou não? Tanto quanto eu posso dizer a única maneira de fazer isso seria chamar wait_for com uma duração zero e verificar se o status está ready ou não, mas existe uma maneira melhor?

segurança de thread de MPI enviar usando segmentos criados com std :: async

Segundo este site , o uso de MPI::COMM_WORLD.Send(…) é thread-safe. No entanto, na minha aplicação eu frequentemente (nem sempre) me deparo com deadlocks ou obtenho falhas de segmentação. Colocar cada chamada dos methods MPI::COMM_WORLD com um mutex.lock() e mutex.unlock() remove consistentemente os deadlocks, bem como os segfaults. É assim que eu crio tópicos: const auto […]