1、线程的概念:
线程是进程内部的一条执行序列(执行流),每个进程至少有一条执行序列:main的执行体。进程可以通过线程库创建 N 条线程,这些新创建的线程称之为函数线程, main 函数所代表的线程为主线程。
2、线程与进程的区别:
(1)进程是资源分配的最小单位,线程是 CPU 调度的最小单位
(2)线程是轻量级的进程
(3)管理方式不同,进程是 PCB 管理,线程是由线程结构管理。
3、线程实现的三种方式
(1)用户级
(2)内核级
(3)混合模式
4、线程的创建:(线程库文件的使用)pthread
int pthread_create(pthread_t id, pthread_attr_t *attr, void (fun)(void), void *arg);
创建一个函数线程!!!
包含线程创建函数的源代码要想生成可执行文件,必须:
gcc -o pthread pthread.c -lpthread
创建出来的函数线程不同于函数调用,函数调用是这条执行流中的一部分。函数线程是创建出一条独立的执行序列,他与主线程同时执行。
线程结束: int pthread_exit(void *); 参数可以设置线程结束状态
等待线程结束: int pthread_join(pthread_t id, void **);
可以获取到等待的线程通过 pthread_exit 设置的结束状态信息
线程函数传参:
a. 将值强转成 void* int a = (int) arg;
b. 将地址强转成 void*int a = (int)arg;