我的程序: while(1) { 线程1 给 线程5 发55信号; 线程5收到信号后给 线程2 发信号 线程1 给 线程4 发55信号; 线程4收到信号后给 线程3 发信号 } 为什么为出现Real-time signal 21,然后程序退出了
希望大虾们指教,代码如下:
sigset_t mask,mask44; pthread_t mythread1; pthread_t mythread2;
void *thread_function1(void *arg) { pthread_sigmask(SIG_SETMASK, &mask,NULL); int signo; sigwait(&mask, &signo); if(signo == 55) { printf("thread1 recv signal\\n"); } }
void *thread_function2(void *arg) { pthread_sigmask(SIG_SETMASK, &mask44, NULL); int signo; sigwait(&mask44, &signo); if(signo == 44) { printf("thread2 recv signal\\n"); }
}
void *thread_function3(void *arg) { sleep(3); pthread_kill(mythread2,55); sleep(2); pthread_kill(mythread1,44);
} int main(void) { sigemptyset(&mask); sigaddset(&mask, 55);
sigemptyset(&mask44); sigaddset(&mask44, 44);
pthread_create( &mythread1, NULL, thread_function1, NULL); pthread_create( &mythread2, NULL, thread_function2, NULL); pthread_t mythread3; pthread_create( &mythread3, NULL, thread_function3, NULL); pthread_join ( mythread1, NULL ) ; pthread_join ( mythread1, NULL ) ; pthread_join ( mythread3, NULL ) ;
printf("main process\\n"); exit(0); }
提示 "Real-time signal 22",程序退出
(iwgh) |