Articles of multithreading

Java: espera () libera o bloqueio do bloco sincronizado

Fiquei com a impressão de que wait () libera todos os bloqueios, mas eu encontrei este post que diz “Chamar a espera dentro de um método sincronizado é uma maneira simples de adquirir o bloqueio intrínseco” Por favor, esclareça que estou um pouco confuso. http://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html

O Java tem suporte para processadores multicore / parallel processing?

Eu sei que agora que a maioria dos processadores tem dois ou mais núcleos, a programação multicore é a última moda. Existe funcionalidade para utilizar isso em Java? Eu sei que o Java tem uma class Thread, mas também sei que isso aconteceu por um longo tempo antes que os multicolors se tornassem populares. Se […]

Aguardando até que a tarefa termine

Como posso fazer meu código esperar até que a tarefa em DispatchQueue seja concluída? Precisa de algum CompletionHandler ou algo assim? func myFunction() { var a: Int? DispatchQueue.main.async { var b: Int = 3 a = b } // wait until the task finishes, then print print(a) // – this will contain nil, of course, […]

Como nomear um thread no Linux?

Eu tenho um aplicativo Linux multithreaded escrito em C / C ++. Eu escolhi nomes para meus tópicos . Para ajudar na debugging, eu gostaria que esses nomes fossem visíveis no GDB, “top”, etc. Isso é possível, e se sim, como? (Existem muitas razões para saber o nome do thread . Agora eu quero saber […]

Desligamento gracioso de threads e executor

O seguinte trecho de código tenta acomodar isso. O código faz um loop para sempre e verifica se há solicitações pendentes a serem processadas. Se houver algum, ele cria um novo thread para processar a solicitação e a envia para o executor. Depois que todos os encadeamentos estiverem concluídos, ele permanece suspenso por 60 segundos […]

Exemplo mais simples e compreensível de palavra-chave volátil em java

Estou lendo sobre a palavra-chave volátil em Java e entendo completamente a parte teórica dela. Mas, o que estou procurando é, um bom exemplo de caso, que mostra o que aconteceria se a variável não fosse volátil e se fosse. Abaixo do trecho de código não funciona como esperado ( do aioobe ) class Test […]

Como fazer um bloqueio de leitura múltipla / gravação única a partir de primitivos de synchronization mais básicos?

Descobrimos que temos vários pontos em nosso código onde leituras simultâneas de dados protegidos por um mutex são bastante comuns, enquanto as gravações são raras. Nossas medições parecem dizer que o uso de um simples mutex dificulta seriamente o desempenho do código de leitura desses dados. Então, o que precisamos é de um mutex de […]

Quão eficiente é bloquear um mutex desbloqueado? Qual é o custo de um mutex?

Em uma linguagem de baixo nível (C, C ++ ou qualquer outro): Eu tenho a escolha entre ter um monte de mutexes (como o que o pthread me fornece ou o que a biblioteca nativa fornece) ou um único para um object. Quão eficiente é bloquear um mutex? Ou seja, quantas instruções do assembler existem […]

Detecção de deadlock em Java

Há muito tempo, salvei uma frase de um livro de referência Java: “O Java não tem mecanismo para lidar com o impasse. Ele nem saberá que ocorreu um impasse”. (Head First Java 2nd Edition, p.516) Então, o que é isso? Existe uma maneira de capturar o caso de impasse em Java? Quer dizer, existe uma […]

Criando threads – Task.Factory.StartNew vs new Thread ()

Estou apenas aprendendo sobre as novas bibliotecas de Threading e Paralela em .Net 4 No passado eu criaria um novo Thread assim (como um exemplo): DataInThread = new Thread(new ThreadStart(ThreadProcedure)); DataInThread.IsBackground = true; DataInThread.Start(); Agora eu posso fazer: Task t = Task.Factory.StartNew(() => { ThreadProcedure(); }); Qual é a diferença, se alguma? obrigado