Articles of multithreading

C #: E se um método estático é chamado de vários segmentos?

No meu aplicativo eu tenho um método estático que é chamado de vários segmentos ao mesmo tempo. Existe algum perigo de meus dados serem misturados? Na minha primeira tentativa, o método não era estático e eu estava criando várias instâncias da class. Nesse caso, meus dados se misturaram de alguma forma. Não sei como isso […]

Por que precisamos de Thread.MemoryBarrier ()?

Em “C # 4 in a Nutshell”, o autor mostra que essa class pode escrever 0 às vezes sem o MemoryBarrier , embora eu não possa reproduzir no meu Core2Duo: public class Foo { int _answer; bool _complete; public void A() { _answer = 123; //Thread.MemoryBarrier(); // Barrier 1 _complete = true; //Thread.MemoryBarrier(); // Barrier […]

O que significa threadsafe?

Recentemente eu tentei acessar uma checkbox de texto de um segmento (diferente do segmento de interface do usuário) e uma exceção foi lançada. Ele disse algo sobre o “código não ser thread seguro” e, portanto, acabei escrevendo um delegado (amostra do MSDN ajudou) e chamando-o em seu lugar. Mas mesmo assim não entendi muito bem […]

O que o thread_local significa em C ++ 11?

Estou confuso com a descrição de thread_local no C ++ 11. Meu entendimento é que cada thread tem uma cópia única de variables ​​locais em uma function. As variables ​​globais / estáticas podem ser acessadas por todos os encadeamentos (possivelmente access sincronizado usando bloqueios). E as variables ​​thread_local são visíveis para todos os threads, mas […]

Qual é o bloqueio e o conceito de reentrância em geral?

Eu sempre fico confuso. Alguém poderia explicar o que Reentrant significa em diferentes contextos? E por que você quer usar reinput versus não-reentrante? Diga primitivas de bloqueio pthread (posix), elas são reentrantes ou não? Quais armadilhas devem ser evitadas ao usá-las? O mutex é reentrante?

Como chamar um método com um thread separado em Java?

digamos que eu tenha um método doWork() . Como faço para chamá-lo de um segmento separado (não o segmento principal).

Como obter o ponteiro da interface JNI (JNIEnv *) para chamadas assíncronas

Eu aprendi que o ponteiro da interface JNI (JNIEnv *) é válido apenas no thread atual. Suponha que eu iniciei um novo thread dentro de um método nativo; como ele pode enviar events de maneira assíncrona para um método Java? Como esse novo segmento não pode ter uma referência de (JNIEnv *). Armazenar uma variável […]

Quando devemos usar o mutex e quando devemos usar o semáforo

Quando devemos usar o mutex e quando devemos usar o semáforo?

Problema de discussão de várias bolas saltitantes

Eu criei um programa que faz várias bolas saltitantes com cor aleatória, velocidade e raio. Quando o usuário clica na canvas, uma nova bola aleatória deve aparecer e se mover pela canvas. Mas eu tenho um problema multi-thread. Quando eu clico na canvas, uma bola aparece e não se move. Quando outro clique vem, nada […]

Quando usar o AtomicReference em Java?

Quando usamos o AtomicReference? É necessário criar objects em todos os programas multithread? Forneça um exemplo simples em que o AtomicReference deve ser usado.