Linux线程基础

复习中掌握线程的基本管理即可,而不用考虑线程的同步:

创建线程花费的代价,比创建进程小得多,所以同一个进程的,多个线程执行多个任务——>比多个进程执行多个任务更有效率。

线程也分为用户级线程、内核级线程——对于前者,多个线程之间的上下文切换,由用户决定;对于后者,则由系统决定。(二者一般是1:1或者1:n的对应关系)

多线程程序的编译时,一定记得要加入动态库,例如:gcc k.c -o k -lpthread,但运行时却不用加。

首先#include <pthread.h>。

线程的创建:int pthread_create(&线程名字,NULL,线程执行函数名,传递的参数*arg),执行函数必须是这种:void *func(),可以带参数,也可以不带,函数体随意。成功则返回0。

线程的等待(所谓等待,就是函数名称的字面意思):int pthread_join(直接是线程名字,保存线程返回值的指针void **returnValue)。成功则返回0。

线程的退出:void pthread_exit(void *returnValue),返回值就是一个字符串,可以由其他函数,如等待函数pthread_join来检测获取其返回值。

//这是最简单的使用了
#include <stdio.h>
#include <pthread.h>

void *func(void *arg)
{
    printf("arg=%d
", *(int *)arg);
    pthread_exit("bye bye");
}

int main()
{
    int res;
    pthread_t first_thread;
    int share_int = 10;
    res = pthread_create(&first_thread, NULL, func, (void *)&share_int);
    printf("res=%d
", res);
    
    void *returnValue;
    res = pthread_join(first_thread, &returnValue);
    printf("returnValue=%s
", (char *)returnValue);
    return 0;
}

线程的属性:

属性创建:

属性描述:

原文地址:https://www.cnblogs.com/quanxi/p/6241300.html