Linux下的软件编程——多任务(线程)
线程
1.什么是线程
轻量级的进程,可实现多任务的并发
2.线程的创建
线程时由某个进程创建
进程创建线程时,会为其分配独立的8M栈区空间
线程和所在进程,以及进程中的其他线程,共用进程的堆区,数据区,文本区
3.线程的调度
宏观并行,微观串行
4.线程的消灭
(1)线程退出
(2)回收资源空间
5.进程和线程的区别
进程:进程是操作系统资源分配的最小单位
资源消耗:进程资源开销大,每次创建都有0~4G的虚拟内存空间
效率角度:由操作系统创建,创建时耗时比线程大,跨进程调度比跨线程调度慢
通信方面:进程间不能直接通信,需要使用进程间通信机制(IPC机制)
安全性角度:进程比线程安全性高,各进程间独立
线程:线程时操作系统任务调度的最小单位
资源消耗:资源消耗较小,只需要在所在进程当中为其开辟出8M的栈区空间
效率角度:由所在进程创建
通信方面:通信简单,可以使用线程共享的区域进行通信(比如全局变量)
安全性角度:线程没有进程安全性好,一个线程异常可能影响同一个进程中的所有线程
6.线程相关的编程
(1)线程的创建:pthread_create ()
pthread_self():获取当前线程的ID号
int pthread_create(pthread_t *thread,const pthread _attr_t *attr,void *(*start_routine)(void *),void *arg)
(1)功能:创建一个新的线程
(2)参数:thread:保存线程ID的变量地址
attr:线程属性的对象地址 NULL:按照默认属性创建
start_routine:函数的指针:指向线程启动后要执行的任务(线程任务函数)
arg:为线程任务函数传递的参数
(3)返回值:成功:0
失败:非0
(2)线程调度:有操作系统调度
(3)线程消亡:1.线程退出:pthread_exit();
2.线程回收:pthread_join();