一、什么是线程
1、线程就是程序的执行路线,是轻量级的;
2、线程不占用独立的内存资源,共享进程资源,但不包括栈区,故线程可以有自己的局部变量;
3、一个进程可以同时有多个线程,可多线程同时运行。
二、线程特点
1、线程不拥有自己的资源,只会拥有属于进程的全部资源,所有的资源分配都是面向进程的;
2、线程有不同的状态,系统提供了多种线程控制原语,如创建线程,销毁线程等等;
3、一个进程中可以有多个线程并发的进行,可以执行相同的程序,也可以执行不同的程序;
4、线程相较于进程来说,线程开销小,任务切换快;
5、每个线程拥有自己独立的寄存器信息、线程ID、函数栈、错误码等信息。
三、规则相关
1、早前线程相关接口,各个厂商都有自己的一套标准,不利于移植;
2、IEEE POSIX 定义了统一的线程接口,即pthread;
3、此定义没有在标准C当中,而是使用一个头文件pthread.h和libpthread.so,在使用gcc链接时需要链接libpthread.so库。
四、相关接口
1、线程创建接口
int pthread_create(pthread_t* restrict thread,
const pthread_attr_t* restrict attr,
void* (*start_routine) (void*),
void* restrict arg);
参数解释:
thread —— 线程ID,创建线程后会输出此线程ID,通过thread带回,pthread_t 即为unsigned long int类型。
attr —— 线程属性,NULL表示缺省属性, pthread_attr_t可能是整型也可能是结构。
start_routine —— 线程执行函数,当线程被调度则执行本函数,函数返回则线程结束。
arg—— 传递给线程执行函数的参数,线程函数的调用者是系统内核,而非用户代码, 因此需要在创建线程时指定参数。