linux下的C语言开发(十):线程等待

和多进程一样,多线程也有自己的等待函数。这个等待函数就是pthread_join函数。那么这个函数有什么用呢?我们其实可以用它来等待线程运行结束。

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
 
void func_1(void* args)
{
    sleep(2);
    printf("this is func_1!\n");
}
void func_2(void* args)
{
    sleep(2);
    printf("this is func_2!\n");
}
 
int main()
{
    pthread_t pid1, pid2;
 
    if(pthread_create(&pid1, NULL, func_1, NULL))
    {
        return -1;
    }
 
    pthread_join(pid1, NULL);
    printf("this is end of func_1!\n");
    
    if(pthread_create(&pid2, NULL, func_2, NULL))
    {
        return -1;
    }
 
    pthread_join(pid2, NULL);
    printf("this is end of func_2!\n");
 
    return 0;
}

编写wait.c文件结束之后,我们就可以开始编译了。首先你需要输入gcc wait.c -o wait -lpthread,编译之后你就可以看到wait可执行文件,输入./wait即可。

尝试在第二个线程之后,不加入pthread_join,直接printf,发现  this is end of func_2出现在this is func_2之前,即在进程结束前后面代码已经运行。

猜你喜欢

转载自blog.csdn.net/u011029104/article/details/108880465