织梦CMS - 轻松建站从此开始!

罗索

为什么我的程序提示 \"Real-time signal 22\",就直接退出?

罗索客 发布于 2007-10-06 11:58 点击:次 
我的程序: while(1) { 线程1 给 线程5 发55信号; 线程5收到信号后给 线程2 发信号 线程1 给 线程4 发55信号; 线程4收到信号后给 线程3 发信号 } 为什么为出现Real-time signal 21,然后程序退出了 希望大虾们指教,代码如下: sigset_t mask,mask44; pthread_t mythr
TAG:

我的程序:
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)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200710/6817.html]
本文出处: 作者:iwgh
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容