Linux——线程
1.线程概念线程是什么是进程内部的一条执行流是CPU调度的基本单元。本质Linux下线程的本质就是task_structLinux下的这个调度单元就是pcb,而这个pcb相较于传统操作系统设计的pcb更加轻量因此Linux下的线程也被称为轻量级进程2.进程和线程区别从功能性质上的差别进程是系统进行资源分配的基本单元线程是系统中进行CPU调度的基本单元使用上的差别针对多任务的处理多进程资源消耗成本更高稳定性更高多线程资源消耗的成本更低调度切换成本更低线程间通信更加方便执行粒度更加细致3.线程间的共享和独有共享进程ID虚拟地址空间页表打开的文件信息信号信息进程间通信描述信息....独有线程ID调度上下文信息线程栈空间.....4.线程的控制Linux下的线程是大佬们封装的一套库函数实现的控制操作的一个函数库pthread_create -clone(pcb)用户态线程针对线程上层封装描述后的执行流数据的整体相对独有的数据用户态线程ID 线程栈内部的局部数据 用户态控制的描述信息内核态线程就指的是pcb-task_struct1线程创建pthread_create(tid,attr,Func,arg)LWP轻量级进程IDps -L进行查看轻量级进程信息轻量级进程ID:就是task_struct里边的pid,每个轻量级进程唯一的pthread_t线程ID:虚拟地址空间中线程独有线程描述空间的地址2线程退出线性入口函数中return线程入口函数运行完毕线程就会退出void pthread_exit(void* retval); 在线程内部调用的任意函数中调用都可以退出线程void pthread_cancel(pthread_t tid);取消一个线程被取消的线程它的返回值没有参考意义的是一个固定值PTHREAD_CABCELED3线程等待等待指定线程退出获取返回值释放它的所有资源int pthread_join(pthread_t tid,void** retval);4线程分离设置线程的分离属性从joinable设置为detach状态线程一旦被分离线程退出后就会自动释放所有的资源不需要被等待也不能被等待void pthread_detach(pthread_t tid);应用场景当我们不关系一个线程的返回值而且也不希望阻塞在等待上则使线程分离5.线程安全多个线程之间对同一份临界资源的访问安全性要求如何实现同步互斥互斥的实现互斥锁同步的实现条件变量信号量读写锁自旋锁锁的种类死锁生产者消费者模型读者写者模型1.什么是并发什么是并行