- 论坛徽章:
- 0
|
redhat 2.6中:
- int main()
- {
- pthread_t pid1;
- pthread_t pid2;
- pthread_create(&pid1,NULL ,thread1_fun,NULL);
- pthread_create(&pid2,NULL,thread2_fun,NULL);
- printf("main thread...\n");
- pause();
- printf("main thread alarm...\n");
- while(1)
- {
- ;
- }
- return 0;
- }
- void thread1_fun(void)
- {
- printf("thread1...\n");
- pause();
- printf("thread1 alarm...\n");
- }
- void thread2_fun(void)
- {
- printf("thread2...\n");
- signal(SIGALARM,alarm_handler);
- alarm(5);
- pause();
- printf("thread2 alarm...\n");
- }
- void alarm_handler(int sig)
- {
- printf("SIGALRM catched...\n");
- }
复制代码
为什么总是打印
main thread...
thread1...
thread2...
SIGALRM catched...
mainthread alarm...
怎么不是线程2收到SIGALRM,而是主线程收到呢?把alarm()换成setitimer()也一样
[ 本帖最后由 wliang511 于 2008-9-11 11:31 编辑 ] |
|