首页 > 代码库 > 关于pthread_join函数在使用时如何不阻塞主线程的一种探索

关于pthread_join函数在使用时如何不阻塞主线程的一种探索

pthread_join 函数是会阻塞主线程的,这会让很多java程序员不适应。因为在java中 start以后一个线程就执行执行了。主线程不会被阻塞。

 

而在linux中 join是会阻塞的。

 

那么如何使用join的时候 不阻塞主线程呢。我给出了一个解决方法。

 

#include <stdio.h>
#include <pthread.h>
void *print_count(int c);

void thread_start();

int main(int argc, char const *argv[])
{

    pthread_t t1;

    pthread_create(&t1,NULL,thread_start,NULL);

    printf("start main\n");

    sleep(3);

    printf("done main\n");


    return 0;
}


void thread_start()
{
    pthread_t t1;

    pthread_create(&t1,NULL,print_count,3);

    pthread_join(t1,NULL);



}


void *print_count(int c)
{


    int i;

    for (i = 0; i < c; ++i)
    {
        /* code */
        printf("i ==  %d\n", i);
    }

}