Articles of multithreading

Quando a palavra-chave volátil deve ser usada em C #?

Alguém pode fornecer uma boa explicação da palavra-chave volátil em c #? Quais problemas são resolvidos e quais não? Em quais casos me poupará o uso de bloqueio?

A implementação da linha padrão da Singleton é segura para Meyers?

A implementação a seguir, usando boot lenta, do segmento Singleton (Meyers ‘Singleton) é segura? static Singleton& instance() { static Singleton s; return s; } Se não, por que e como fazer isso seguro?

Exemplo para aumentar shared_mutex (múltiplas leituras / uma gravação)?

Eu tenho um aplicativo multithread que tem que ler alguns dados com freqüência e, ocasionalmente, que os dados são atualizados. Agora um mutex mantém o access a esses dados seguros, mas é caro porque eu gostaria que vários threads pudessem ler simultaneamente e bloqueá-los apenas quando uma atualização fosse necessária (o thread de atualização poderia […]

Referência indefinida para pthread_create no Linux

Eu peguei a seguinte demonstração da web em https://computing.llnl.gov/tutorials/pthreads/ #include #include #define NUM_THREADS 5 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf(“Hello World! It’s me, thread #%ld!\n”, tid); pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; t<NUM_THREADS; t++){ printf("In main: creating thread %ld\n", t); rc […]

java.lang.OutOfMemoryError: espaço de heap Java

Estou recebendo o seguinte erro na execução de um programa multi-threading java.lang.OutOfMemoryError: Java heap space O erro acima ocorreu em um dos segmentos. Até onde sei, o espaço de heap é ocupado apenas por variables ​​de instância. Se isso estiver correto, então por que esse erro ocorreu após a execução correta por algum tempo, já […]

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 […]