Articles of multithreading

Usando C # MethodInvoker.Invoke () para um aplicativo GUI … isso é bom?

Usando o C # 2.0 e o delegado MethodInvoker, tenho um aplicativo GUI recebendo algum evento do thread da GUI ou de um thread de trabalho. Eu uso o seguinte padrão para manipular o evento no formulário: private void SomeEventHandler(object sender, EventArgs e) { MethodInvoker method = delegate { uiSomeTextBox.Text = “some text”; }; if […]

Como ler corretamente um campo int de Interlocked.Increment’ed?

Suponha que eu tenha um campo int não-volátil e um thread que Interlocked.Increment seja ele. Outro thread pode ler isso com segurança diretamente ou a leitura também precisa ser intertravada? Eu pensava anteriormente que eu tinha que usar uma leitura intertravada para garantir que estou vendo o valor atual, já que, afinal, o campo não […]

Por que este simples exemplo de std :: thread não funciona?

Tentei o exemplo a seguir compilado com g++ -std=gnu++0x t1.cpp e g++ -std=c++0x t1.cpp mas ambos resultam no aborto do exemplo. $ ./a.out terminate called after throwing an instance of ‘std::system_error’ what(): Aborted Aqui está o exemplo: #include #include void doSomeWork( void ) { std::cout << "hello from thread…" << std::endl; return; } int main( […]

Qualquer bom Spring threading com um exemplo TaskExecutor?

Eu estou tentando obter uma alça sobre como implementar o threading em um aplicativo Java que usa o Spring para gerenciamento de transactions. Eu encontrei a seção TaskExecutor na documentação do Spring , e ThreadPoolTaskExecutor parece que iria atender às minhas necessidades; ThreadPoolTaskExecutor Essa implementação só pode ser usada em um ambiente Java 5, mas […]

Qual é a diferença entre QueueUserWorkItem () e BeginInvoke (), para executar uma atividade assíncrona sem tipos de retorno necessários

Seguindo a minha pergunta BeginInvoke () / EndInvoke (), existem grandes diferenças no desempenho / qualquer outra coisa entre Delegate.BeginInvoke () e usando QueueUserWorkItem () para invocar um delegado de forma assíncrona?

Aguarde a conclusão dos encadeamentos em pool

Sinto muito por uma pergunta redundante. No entanto, encontrei muitas soluções para o meu problema, mas nenhuma delas é muito bem explicada. Espero que fique claro aqui. O thread principal do meu aplicativo C # gera 1..n trabalhadores em segundo plano usando o ThreadPool. Desejo que o thread original seja bloqueado até que todos os […]

Como evitar a privação de gravação em um bloqueio de gravação de leitura em pthreads

Eu tenho algumas perguntas sobre bloqueios de leitura / gravação em POSIX Pthreads em um sistema * nix, digamos Linux por exemplo. Desejo saber qual é a polarização padrão para o bloqueio de gravação de leitura, ou seja, ela prefere ler sobre gravações ou vice-versa? Ele fornece alguma API para alterar esse comportamento padrão. O […]

Qual é a diferença entre Task.Run () e Task.Factory.StartNew ()

Eu tenho o método: private static void Method() { Console.WriteLine(“Method() started”); for (var i = 0; i < 20; i++) { Console.WriteLine("Method() Counter = " + i); Thread.Sleep(500); } Console.WriteLine("Method() finished"); } E eu quero começar este método em uma nova tarefa. Eu posso começar uma nova tarefa como essa var task = Task.Factory.StartNew(new Action(Method)); […]

Contêineres STL C ++ 11 e segurança de roscas

Tenho dificuldade em encontrar informações atualizadas sobre isso. As versões C ++ 11 de contêineres STL possuem algum nível de segurança de encadeamento garantido? Eu espero que eles não, devido a razões de desempenho. Mas, novamente, é por isso que temos std::vector::operator[] e std::vector::at .

Pool de threads em C ++

O que é uma boa implementação de código-fonte aberto de um pool de threads para o C ++ usar no código de produção (algo como boost)? Por favor, forneça seu próprio código de exemplo ou um link para exemplo de uso de código.