线程与线程同步
进程是执行过程中的代码
线程是
一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成
程是指正在运行的一个程序的实例,包括代码、数据、堆栈、打开的文件等系统资源,是操作系统中资源分配和调度的基本单位。
线程
1、线程的概述
进程有自己的独立地址空间,多个线程共有一个地址空间
每个线程都有自己的栈区,寄存器
多个线程共享代码区、堆区、全局数据区、打开的文件(文件描述符)都是线程共享的
线程实最小的执行单位,进程是最小的的资源分配单位
多个线程可以抢占更多的时间片
线程切换上下文比进程切换快
2、线程的创建
2.1线程函数
获得线程id函数
pthread_t pthread_self(void); // 返回当前线程的线程ID
在·一个进程中调用线程创建函数就可以得到一个子线程,需要给每个创建出来的线程指定一个处理函数
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
thread: 传出参数,是无符号长整形数,线程创建成功,会将线程 ID 写入到这个指针指向的内存中
attr:线程的属性,一般写NULL
start_routine:函数指针,创建出的子线程的处理动作,也就是该函数在子线程中执行
arg:作为实参传递到 start_routine 指针指向的函数内部