Articles of multithreading

Como obter o uso da CPU por thread no windows (win32)

Procurando por funções de API do Win32, código de exemplo C ++ ou Delphi que me informa o uso da CPU (porcentagem e / ou tempo total de CPU) de um thread (não o total de um processo). Eu tenho o ID do segmento. Eu sei que o Sysinternals Process Explorer pode exibir essas informações, […]

Duplo verificado bloqueio em singleton

aqui está minha class personalizada para o padrão singleton. neste código, eu uso o bloqueio verificado como abaixo. Como eu leio muitos posts em alguma fonte, eles dizem que checagem dupla é útil porque evita que dois threads simultâneos executados ao mesmo tempo façam dois objects diferentes. public class DoubleCheckLocking { public static class SearchBox […]

C #: esperando por todos os segmentos para concluir

Eu estou correndo em um padrão comum no código que estou escrevendo, onde eu preciso esperar por todos os segmentos em um grupo para completar, com um tempo limite. O tempo limite é suposto ser o tempo necessário para que todos os threads sejam concluídos, portanto, simplesmente fazer thread.Join (timeout) para cada thread não funcionará, […]

Acontece antes de relacionamentos com campos voláteis e blocos sincronizados em Java – e seu impacto em variables ​​não voláteis?

Ainda sou muito novo no conceito de threading e tento entender mais sobre isso. Recentemente, me deparei com um post no blog What Volatile Means in Java, de Jeremy Manson, onde ele escreve: Quando um thread grava em uma variável volátil, e outro thread vê esse write, o primeiro thread informa ao segundo sobre todo […]

Obtendo o ID do encadeamento de um encadeamento

Em C # ao depurar threads por exemplo, você pode ver o ID de cada thread. Não consegui encontrar uma maneira de obter o mesmo thread, programaticamente. Eu não conseguia nem obter o ID do segmento atual (nas propriedades do Thread.currentThread ). Então, eu me pergunto como o Visual Studio obter os IDs dos segmentos, […]

Como você implementaria seu próprio bloqueio de leitor / gravador no C ++ 11?

Eu tenho um conjunto de estruturas de dados que eu preciso proteger com um bloqueio de leitores / gravador. Estou ciente de boost :: shared_lock, mas eu gostaria de ter uma implementação personalizada usando std :: mutex, std :: condition_variable e / ou std :: atomic para que eu possa entender melhor como funciona (e […]

Atomic UPDATE .. SELECT no Postgres

Eu estou construindo um tipo de mecanismo de enfileiramento. Existem linhas de dados que precisam de processamento e um sinalizador de status. Estou usando uma update .. returning cláusula para gerenciá-lo: UPDATE stuff SET computed = ‘working’ WHERE id = (SELECT id from STUFF WHERE computed IS NULL LIMIT 1) RETURNING * A parte de […]

Por que wait () e notify () são declarados na class Object do Java?

Por que os methods wait() e notify() são declarados na class Object , em vez da class Thread ?

Terminação de segmento C # e Thread.Abort ()

No MSDN, a descrição do método Thread.Abort () diz: “Chamar esse método geralmente termina o segmento”. Por que não sempre? Em quais casos não termina o tópico? Existe alguma outra possibilidade para terminar os tópicos?

É Task.Factory.StartNew () garantido para usar outro segmento que o segmento de chamada?

Eu estou começando uma nova tarefa de uma function, mas eu não quero que ele seja executado no mesmo segmento. Eu não ligo para qual encadeamento ele é executado, contanto que seja diferente (então as informações dadas nesta questão não ajudam). Tenho certeza de que o código abaixo sempre sairá do TestLock antes de permitir […]