Articles of multithreading

Quando usar volátil com multi-threading?

Se houver dois encadeamentos acessando uma variável global, então muitos tutoriais dizem que a variável torna-se volátil para evitar que o compilador armazene em cache a variável em um registrador e, portanto, não seja atualizado corretamente. No entanto, dois segmentos que acessam uma variável compartilhada são algo que exige proteção por meio de um mutex, […]

Como usar o WPF Background Worker

Eu sou um iniciante com WPF , no meu aplicativo eu preciso executar uma série de etapas de boot, estas levam 7-8 segundos para concluir durante o qual minha interface do usuário não responde. Para resolver isso, executo a boot em um thread separado: public void Initialization() { Thread initThread = new Thread(new ThreadStart(InitializationThread)); initThread.Start(); […]

Volátil vs. intertravado vs. bloqueio

Digamos que uma class tenha um campo public int counter acessado por vários threads. Este int só é incrementado ou decrementado. Para incrementar este campo, qual abordagem deve ser usada e por quê? lock(this.locker) this.counter++; , Interlocked.Increment(ref this.counter); , Altere o modificador de access do counter para public volatile . Agora que descobri que é […]

O que java.lang.Thread.interrupt () faz?

Você poderia explicar o que java.lang.Thread.interrupt() faz quando invocado?

Eventos C # e Segurança de Segmentos

ATUALIZAR A partir do C # 6, a resposta a essa pergunta é: SomeEvent?.Invoke(this, e); Eu freqüentemente ouço / leio o seguinte conselho: Sempre faça uma cópia de um evento antes de verificar se há null e dispará-lo. Isso eliminará um problema em potencial com o encadeamento em que o evento se torna null no […]

Qual é a diferença entre tarefa e thread?

No c # 4.0, temos Task no namespace System.Threading.Tasks . Qual é a verdadeira diferença entre Thread e Task ? Eu fiz um programa de exemplo (ajuda tirada do MSDN) para o meu próprio bem de aprender com Parallel.Invoke Parallel.For Parallel.ForEach mas tenho muitas dúvidas pois a ideia não é tão clara. Eu procurei inicialmente […]

Como devo testar o código segmentado?

Até agora, evitei o pesadelo que está testando o código multi-thread, já que parece um campo minado demais. Gostaria de perguntar como as pessoas testaram código que depende de threads para execução bem-sucedida, ou apenas como as pessoas testaram esses tipos de problemas que só aparecem quando dois segmentos interagem de uma determinada maneira? Este […]

Diferença entre volátil e sincronizado em Java

Eu estou querendo saber a diferença entre declarar uma variável como volatile e sempre acessando a variável em um bloco synchronized(this) em Java? De acordo com este artigo http://www.javamex.com/tutorials/synchronization_volatile.shtml, há muito a ser dito e existem muitas diferenças, mas também algumas semelhanças. Estou particularmente interessado nesta informação: … o access a uma variável volátil nunca […]

Como executar um functor ou um lambda em um determinado thread no estilo Qt, GCD?

Em ObjC com o GCD, existe uma maneira de executar um lambda em qualquer um dos threads que giram um loop de events. Por exemplo: dispatch_sync(dispatch_get_main_queue(), ^{ /* do sth */ }); ou: dispatch_async(dispatch_get_main_queue(), ^{ /* do sth */ }); Ele executa algo (equivalente a []{ /* do sth */ } em C ++) na […]

É seguro usar uma instância java.sql.Connection estática em um sistema multithread?

Estou executando um aplicativo da web no Tomcat. Eu tenho uma class que lida com todas as consultas do database. Esta class contém o object Connection e os methods que retornam os resultados da consulta. Este é o object de conexão: private static Connection conn = null; Tem apenas uma instância (singleton). Além disso, tenho […]