Articles of multithreading

‘using’ statement vs ‘try finally’

Eu tenho um monte de propriedades que eu vou usar bloqueios de leitura / gravação. Eu posso implementá-las com uma try finally ou uma cláusula using . Na try finally eu iria adquirir o bloqueio antes da try e liberar no finally . Na cláusula using , eu criaria uma class que adquire o bloqueio […]

Ter um conjunto de tarefas com apenas X em execução de cada vez

Digamos que eu tenha 100 tarefas que fazem algo que leva 10 segundos. Agora, quero apenas executar 10 de cada vez, como quando 1 desses 10 termina outra tarefa é executada até que todos estejam concluídos. Agora eu sempre usei ThreadPool.QueueUserWorkItem() para tal tarefa, mas eu li que é uma prática ruim fazer isso e […]

É seguro construir widgets Swing / AWT NÃO no segmento de expedição de events?

Eu integrei a aparência da Substância em meu aplicativo e tive vários problemas com relação às rotinas internas de verificação de EDT (Event Dispatch Thread). Substância absolutamente se recusa a construir classs de interface do usuário fora do EDT. Eu fiz muito Swing / AWT e conheço a maioria das regras sobre o EDT. Eu […]

Por que o destruidor de um futuro é retornado do bloqueio `std :: async`?

Ao tentar responder a outra pergunta sobre o Stackoverflow , percebi que esse snippet C ++ 11 simples está implicitamente bloqueando o thread de chamada: std::async(std::launch::async, run_async_task) Para mim, isso teria parecido o caminho canônico do C ++ 11 para iniciar uma tarefa de forma assíncrona, sem se preocupar com o resultado. Em vez disso, […]

Como matar um fio instantaneamente em c #?

Eu estou usando o método thread.Abort para matar o segmento, mas não está funcionando. Existe alguma outra maneira de terminar o tópico? private void button1_Click(object sender, EventArgs e) { if (Receiver.IsAlive == true) { MessageBox.Show(“Alive”); Receiver.Abort(); } else { MessageBox.Show(“Dead”); Receiver.Start(); } } Eu estou usando isso, mas toda vez que recebo o status Alive […]

HashSet Concorrente no .NET Framework?

Eu tenho a seguinte class. class Test{ public HashSet Data = new HashSet(); } Eu preciso alterar o campo “Data” de diferentes threads, então eu gostaria de algumas opiniões sobre a minha atual implementação thread-safe. class Test{ public HashSet Data = new HashSet(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) […]

Bloqueio verificado duplo Java

Eu me deparei com um artigo discutindo recentemente o duplo padrão de bloqueio verificado em Java e suas armadilhas e agora eu estou querendo saber se uma variante desse padrão que eu tenho usado há anos está sujeita a quaisquer problemas. Eu olhei para muitos posts e artigos sobre o assunto e entendi os possíveis […]

Operação de Crossthread inválida… – VB.NET

Eu estou usando vb.net, e no meu programa eu recebo este erro ‘crossthread operação não válida’ quando eu executar meu backgroundworker que irá tornar esta checkbox de texto habilitada true. Meu sub principal primeiro irá ativar o enabled para false, e quando o backgroundworker for executado, ele retornará true e sairá. Por que isso me […]

Por que não é uma boa prática sincronizar em Boolean?

Meu arquiteto sempre diz que Nunca sincronize em Boolean Eu não sou capaz de entender o motivo e realmente aprecio se alguém poderia explicar com um exemplo de por que não é uma boa prática. Código Amostra de Referência private Boolean isOn = false; private String statusMessage = “I’m off”; public void doSomeStuffAndToggleTheThing(){ // Do […]

Como colocar uma tarefa para dormir (ou atraso) no C # 4.0?

Há Task.Delay no .NET 4.5 Como posso fazer o mesmo no .NET 4.0?