AS400多线程

发布于 2022-10-15 04:17:43 字数 4499 浏览 14 评论 0

#define THREAD_SIZE 3

void *thread(void *parm)     
{                           
    int f = 0;               
    syslog("create thread ");
                             
    while( f < 50 )         
      f++;                  
    syslog("thread end");   
    pthread_exit(NULL);      
    return NULL;            
}                           
int main()                             
{                                      
    pthread_t t_id??(THREAD_SIZE??);   
                                       
    int i, ret;            
    for (i=0; i<THREAD_SIZE; i++)                                    
   {                                                               
        ret=pthread_create(&t_id??(i??), NULL ,(void *)thread, NULL);
        if (ret != 0) {                                             
           syserr("create thread error");                           
         exit(-1);                                                
    }               
    for (i=0; i<THREAD_SIZE; i++)      
   {                                 
        pthread_join(t_id??(i??),NULL);         
   }                                                   
   syslog("Main End");                           
   exit(0);
}                                                                           

其中 syslog 函数用fopen,fputs fclose 写日志。
这个程序创建的辅线程执行都没问题,但为什么所有的辅线程执行完后1分多钟,主线程才结束那?
因为 syslog("thread end");    与 主线程里的 syslog("Main End");    打印时间差1分多。
请问谁知道主线程为什么延迟这么长时间才结束?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文