[Cascavel-pm] Agendador de tarefas
Luis Campos de Carvalho
monsieur_champs em yahoo.com.br
Terça Junho 14 20:19:08 PDT 2005
--- Igor Sutton Lopes <igor em izut.com> escreveu:
> > Boa implementação.
> > Mas cuidado: você está preparado para ter mais de uma versão do programa
> > rodando ao mesmo tempo? Ou, em outras palavras: ele é "thread-safe"?
> > Pense nisso ;-)
>
> Realmente, utilizando $SIG{ALRM} não se tornará thread-safe. Seria ideal mesmo
> calcular o tempo de espera para a próxima execução. Isso resolveria o
> problema de modularização também. Valeu pela dica, amanhã a noite irei
> implementar um POC com a sua dica :) Terei que pensar também como fazer para
> dois jobs poderem ser executados ao mesmo tempo... Vou pedir outra dica: o
> que seria melhor: utilizar fork() ou threads para executar os jobs? fork()
> clona o processo, porém processo pai e filho não se comunicam (senão por IPC,
> acho eu). E threads, eu nunca consegui (nem tentei direito, fica de tema de
> casa) comunicar os processos. Alguma idéia?
Nem todos os interpretadores Perl no mercado suportam threads.
Particularmente, eu prefiro fork().
Claro, isso tem desvantagens, mas não é impossível.
Quanto você precisa se comunicar com o processo pai?
Pode usar kill() e os sinais "de usuário" para isso, implementando handlers assícronos
registrados no processo-pai com "$SIG{<id_do_sinal>} = sub{ ... };".
Espero que isso ajude também.
Se ainda assim ficar complicado, podemos fazer um brain-storm no encontro social, neste
sábado...
Putamplexos e boa sorte!
--
Luis Campos de Carvalho
Member of "São Paulo Perl Mongers",
Unix SysAdmin & OCP/DBA Oracle
http://br.geocities.com/monsieur_champs/
____________________________________________________
Yahoo! Mail, cada vez melhor: agora com 1GB de espaço grátis! http://mail.yahoo.com.br
Mais detalhes sobre a lista de discussão Cascavel-pm