per thread signal 처리에 대한 질문입니다.
main()
{
pthread_create(func);
pthread_create(func);
pthread_create(func2);
pthread_join();
pthread_join();
pthread_join();
}
func()
{
alarm(10);
call();
alarm(0);
}
call()
{
/* alarm을 비롯한 signal을 block시킴 */
alarm(3);
recv()
alarm(0);
/* alarm을 비롯한 signal을 unblock시킴 */
}
alarm_handle()
{
return();
}
위의 상황을 보시면 아시겠지만, call이란 함수는,
1. 같은 thread에서 설정한 alarm과의 간섭이 없어야 하고,
(보통은 alarm을 같은 thread에서 쓰면 전에 쓰였던 alarm 세팅값은
reset이 불가피하죠)
2. 같은 thread에서 발생한 alarm을 포함한 signal을 일시적으로 blcok
시켜야 하며,
(보통 signal block sigprocmask를 사용하지만 이건 thread)
3. 각각의 thread는 자신이 발생시킨 alarm에 대해서만 signal을 catch할것
(보통의 signal처리에서 SIGALRM은 process단위로 발생합니다.)
(위 경우에는 func에서 발생시킨 SIGALRM이 func1에 영향을 주어서
도 않 되고, 같은 func이라해도 다른 thread의 func에는 영향을 주면
않 될 것 같습니다. ^^;)
상당히 힘든 조건인데요....
제가 구현하고 싶은 조건이 가능한것인지 혹시 가능하다면 어떤 방법들이 동원
되어야 하는 것인지 궁금합니다.
고수님의 좋은 가르침을 기대하겠습니다.
댓글 달기