Usando threads em Perl
Postado em 6 de outubro de 2007 as 23:37:48, por Renan Rangel
#!/usr/bin/perl
use threads;
Já tem algum tempo que quero brincar com threads em Perl, e hoje comecei a fazer alguns exemplos e escrever pequenos programas.
Achei bem interessante, principalmente podendo fazer mais de uma coisa ao mesmo tempo. Dependendo do tipo de programa, é possível obter uma boa melhora no desempenho utilizando threads.
Mas como já dizia Ben Parker, "grandes poderes trazem grandes responsabilidades". É preciso tomar cuidado com o acesso a data compartilhada, principalmente se mais de uma thread usa uma determinada variável.
Isso, porque durante uma leitura e escrita de uma variável, é possível que outra thread tenha alterado o valor da variável e isso causaria resultados indesejados.
$count++;
O código acima faz 3 operações: obtem o valor de $count, incrementa em 1 e salva novamente na variável. Se no tempo em que ele está incrementando o valor, outra thread tiver feito isso, ele não terá o novo valor, que será sobrescrito pelo seu (o que geralmente não é nada bom...).
Se alguém se interessa em usar threads em Perl, recomendo ler a documentação (perldoc perlthrtut), que foi o ponto de partida que usei para começar a usá-las.
use threads;
Já tem algum tempo que quero brincar com threads em Perl, e hoje comecei a fazer alguns exemplos e escrever pequenos programas.
Achei bem interessante, principalmente podendo fazer mais de uma coisa ao mesmo tempo. Dependendo do tipo de programa, é possível obter uma boa melhora no desempenho utilizando threads.
Mas como já dizia Ben Parker, "grandes poderes trazem grandes responsabilidades". É preciso tomar cuidado com o acesso a data compartilhada, principalmente se mais de uma thread usa uma determinada variável.
Isso, porque durante uma leitura e escrita de uma variável, é possível que outra thread tenha alterado o valor da variável e isso causaria resultados indesejados.
$count++;
O código acima faz 3 operações: obtem o valor de $count, incrementa em 1 e salva novamente na variável. Se no tempo em que ele está incrementando o valor, outra thread tiver feito isso, ele não terá o novo valor, que será sobrescrito pelo seu (o que geralmente não é nada bom...).
Se alguém se interessa em usar threads em Perl, recomendo ler a documentação (perldoc perlthrtut), que foi o ponto de partida que usei para começar a usá-las.
Comentários:









Enviar para um amigo(a)


Stumble It!

Deixe um comentário: