pthread에서 thread Suspend. Continue시키는 방법

funky4u의 이미지

자바에서는 Thread Suspend시키고 Continue하는 메소드가 있었는데 C Posix Thread 에서는 없나요?
POSIX 스레드를 잠시 Pause시켰다가 continue하려고 합니다.
API를 찾아 보는데 없는거 같군요.

샘플이나 API좀 부탁드립니다. :)

dreampia의 이미지

POSIX threads에는 없습니다.
그래서 pthread_mutex_lock(), pthread_mutex_unlock(), pthread_cond_wait(), phtread_cond_signal() 등을 사용해서 구현합니다.

solaris라면 thr_suspend(), thr_continue() 를 쓰면 됩니다. 단 threads model을 POSIX가 아닌 solaris threads로 해야 하겠죠.. ^^

>/dev/null 2>&1

nanta의 이미지

pthread_kill()을 이용하여 Resume/suspend를 원하는 Thread ID를 입력하고,
Resume하고자 할 때 SIGCONT를 날리시고, Suspend하고자 할 때 SIGTSTP를
날리면 가능합니다.
그리고, Thread를 생성하자마자 Suspend를 시키고자 한다면, pthead_create()에서
직접 Thread를 생성/호출하지 않고, Thread 이름을 등록하는 지점에 ThreadProc()을
하나 만드셔서 해당 ThreadProc() 함수를 거쳐서 실제 Thread를 호출시키도록 하고,
Thread 호출 전에 pthread_kill(pthread_self(), SIGTSTP) 또는 rasie(SIGTSTP)를
사용하시면 가능할 것입니다.

하지만, 시스템 제한사항에 따라 동작이 약간 다를 수가 있습니다. (NPTL ...)

레드햇/몬타비스타 사이트에서 추가 정보를 얻을 수 있을 것입니다.