2011-10-06 2 views
0

나는 this 질문을 말하고 있지만, 반년 전인 것처럼 & 이미 답변했습니다.시간 초과 된 경우 메시지가있는 스레드에 알람 설정

내가 연결을 (소켓) 듣고 있기 때문에 내에서 알람을 설정해야한다고 생각하고 클라이언트가 명령을 보낸 때까지 알람을 설정할 시간을 모른다.

짧은 컨텍스트 : 클라이언트가 자체 스크립트를 작성하도록 명령 한 명령을 보낸다. 이 모듈은 필요한 시간보다 오래 실행하면 죽여야합니다. 이 "should"는 매우 구체적이며 각 모듈의 config 파일에 기록됩니다.

나는 간단한 펄 스크립트 내에서 알람을 시도했고, 내 자신의 메시지로도 꽤 잘 작동했다.

나는 경보가 스크립트를 종료하게 할 수 있지만, 나에게 메시지를 전혀주지 않는다.

예 : 이 스레드와 다를 때까지 사용 예 : this

Thread :: alarm ($ time)하지만 약 3 주 전에 perl로 시작 했으므로 정확하게 구현할 수 없었습니다. (아무 것도하지 않습니다. 프로그램).

도움이 될만한 코드가 있거나 사용 가능한 예제가 있고 방금 찾지 못한 사이트가 있습니까?

+0

지금 당장은 다른 방법을 시도하고 있습니다. 나는 iThreads를 2 개 사용하고, 처음 두 번째는 정의 된 허용 시간을 끝낸 후에도 계속 실행하면 2 번째를 죽일 것입니다. 지금은 그 방법을 모르지만 여전히 검색 중이므로 지금 물어 보지 않겠습니다 ;-) –

답변

0

이미 AnyEvent을 시도하셨습니까?

AnyEvent는 당신에게 타이머처럼 행동 설치 전문가를 보자

# one-shot or repeating timers 
my $w = AE::timer $seconds,   0, sub { ... }; # executed only once 
my $w = AE::timer $seconds, $interval, sub { ... }; # executed every $interval 

$seconds는 스레드 시작의 설정 단계에서 정의 할 수 있습니다.

콜백에서 프로그램을 죽이는 코드를 사용할 수 있습니다. AnyEvent의 로깅 프레임 워크가 기본값 인이기는하지만 아무 것도 기록하지 않지만 일부 로깅을 활성화하여 메시지에 대한 필요성을 파악할 수 있습니다.

+0

감사합니다. 그러나 시스템에 새 API를 설치할 수 없습니다. 이 스크립트는 n 서버까지 배포됩니다. –