Articles of multithreading

Quando e como devo usar uma variável ThreadLocal?

Quando devo usar uma variável ThreadLocal ? Como isso é usado?

SwingUtilities.invokeLater

Minha pergunta está relacionada ao SwingUtilities.invokeLater . Quando devo usá-lo? Preciso usar cada vez que preciso atualizar os componentes da GUI? O que exatamente faz? Existe uma alternativa para isso, pois não soa intuitivo e adiciona código aparentemente desnecessário?

Implementar Tempo Limite Genérico C #

Eu estou procurando boas idéias para implementar uma maneira genérica de ter uma única linha (ou delegado anônimo) de código executar com um tempo limite. TemperamentalClass tc = new TemperamentalClass(); tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min Eu estou procurando uma solução que possa ser elegantemente implementada em muitos […]

Por que Thread.Sleep é tão prejudicial

Muitas vezes vejo isso mencionado que Thread.Sleep(); não deve ser usado, mas não consigo entender por que isso acontece. Se Thread.Sleep(); pode causar problemas, existem soluções alternativas com o mesmo resultado que seria seguro? por exemplo. while(true) { doSomework(); i++; Thread.Sleep(5000); } outro é: while (true) { string[] images = Directory.GetFiles(@”C:\Dir”, “*.png”); foreach (string image […]

Por que deve esperar () estar sempre no bloco sincronizado

Nós todos sabemos que, a fim de invocar Object.wait() , esta chamada deve ser colocada em bloco sincronizado, caso contrário, um IllegalMonitorStateException é acionado. Mas qual é a razão para fazer essa restrição? Eu sei que wait() libera o monitor, mas por que precisamos adquirir explicitamente o monitor fazendo um bloco específico sincronizado e então […]

Em ArrayBlockingQueue, por que copiar o campo do membro final na variável final local?

Em ArrayBlockingQueue , todos os methods que requerem o bloqueio copiam para uma variável final local antes de chamar lock() . public boolean offer(E e) { if (e == null) throw new NullPointerException(); final ReentrantLock lock = this.lock; lock.lock(); try { if (count == items.length) return false; else { insert(e); return true; } } finally […]

O ruby ​​tem multithreading real?

Eu sei sobre o threading “cooperativo” de ruby usando fios verdes . Como posso criar encadeamentos “no nível do sistema operacional” reais em meu aplicativo para usar vários núcleos de CPU para processamento?

Quantos segmentos uma Java VM suporta?

Quantos segmentos uma Java VM suporta? Isso varia de fornecedor? pelo sistema operacional? outros fatores?

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(); […]