linux下C语言多线程开发学习笔记

来源:互联网 发布:公务员恋爱 知乎 编辑:程序博客网 时间:2024/05/22 17:15

此文章用于日后查看linux多线程编程的相关知识。


1、主进程创建多个线程后,如果不等待线程结束,那么所有线程会随着主进程的结束而结束。

测试代码:

void * pthread1()
{     
    int data = 0;
    while(1)
    {
        data++;
        printf("Pthread1: %d\n",data);
        sleep(1);
    }
}
void * pthread2()
{
    int data2 = 0;
    while(1)
    {
        data2++;
        printf("Pthread2: %d\n",data2);
        sleep(1);
    }
}
int main()
{
    pthread_t p1,p2;
    pthread_create(&p2,NULL,pthread1,NULL);
    pthread_create(&p1,NULL,pthread2,NULL);
    while(1)
    {
        sleep(1);
        printf("I am the father\n");
    }
    return 0;
}

如上所示,如果创建线程后主程序仍然在执行,那么就不用调用pthread_join()函数,如果把主进程中的while(1)去掉则所有线程都会跟着主进程的结束而结束。同理,如果创建完线程主进程就没事做了,那就得把pthread_join()加上去。

2、创建线程时需要注意,各个线程   共享  主进程中的全局变量,如果没有注意这点可能会导致线程2修改了线程1中全局变量的值。

3、互斥锁pthread_mutex可以用于锁住代码段或者锁住全局变量的使用权,用于保证线程的执行顺序。

0 0