QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1238|回复: 2

多线程的一个小问题

[复制链接]
发表于 2006-5-30 20:49:09 | 显示全部楼层 |阅读模式
我写了一个小程序,如下:
[code:1]
#include <stdio.h>
#include <pthread.h>
void *catch_data(void *args)
{
        printf("aaa\n");
}

void *detect_worm(void *args)
{
        printf("bbb\n");
}

int main(void)
{
    int catch,analysis;
    pthread_create(&catch,NULL,catch_data,NULL);   
    pthread_create(&analysis,NULL,detect_worm,NULL);
   // sleep(1);
    return 0;
}
[/code:1]
我不调用sleep(1),好像两个进程就不调用喔,就是"aaa"和"bbb"
不打印,如果调用了,就可以打印出来,这是为什么?
 楼主| 发表于 2006-5-30 21:27:09 | 显示全部楼层
好像那个sleep(i)中的i就是程序运行的时间
这是为什么,谁帮帮我,
谢谢了
回复

使用道具 举报

发表于 2006-5-30 22:43:55 | 显示全部楼层
[quote:58a27170d7="ztj111"]好像那个sleep(i)中的i就是程序运行的时间
这是为什么,谁帮帮我,
谢谢了[/quote]

因为在主线程退出时同时会终止并释放其它线程的资源(不包括堆上内存分配),也会进而终止其它线程。如果你想要等待那两个线程结束的话,代码改为:
[code:1]
#include <stdio.h>
#include <pthread.h>
void *catch_data(void *args)
{
        printf("aaa\n");
}

void *detect_worm(void *args)
{
        printf("bbb\n");
}

int main(void)
{
    pthread_t catch,analysis;
    pthread_create(&catch,NULL,catch_data,NULL);   
    pthread_create(&analysis,NULL,detect_worm,NULL);

    pthread_join(catch, NULL);
    pthread_join(analysis, NULL);

   // sleep(1);
    return 0;
}
[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 14:28 , Processed in 0.038613 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表