1、线程共享进程的堆,但拥有自己私有的栈——用于函数调用。
2、线程功能不属于c/c++标准库,链接时需要使用-pthread选项
3、线程功能属于c++11标准库,可以使用c++11提供的thread类定义线程对象。
4、pthread_create()函数在创建完毕后立即返回,它并不等待线程结束。
5、原线程与新线程如何执行与调度有关,程序不得依赖线程的先后执行的关系,可以使用同步机制确定线程的先后执行关系。
调用pthread_exit()函数显式结束
被其他线程"撤销"
7、使用pthread_join函数可等待子线程结束,获取子线程返回值
异步可撤销:在其执行的任何时刻都可撤销
同步可撤销:线程可撤销,但撤销操作首先进入队列排队,在线程执行到特定撤销点时才可撤销
不可撤销:撤销请求会被系统自动忽略
11、线程的局部存储,让线程拥有数据的独立副本,不能简单赋值或读取
pthread_setspecific()函数:设置对应键的值
pthread_getspecific()函数:读取对应键的值
12、线程清除
线程清除函数:回调函数,单void *参数,无返回值
目的:销毁线程退出或被撤销时未释放的资源
pthread_cleanup_push(void (*routine)(void *)) 注册线程清除函数
pthread_cleanup_pop 取消线程清除注册,传非零参数将执行线程清除工作
2、线程功能不属于c/c++标准库,链接时需要使用-pthread选项
3、线程功能属于c++11标准库,可以使用c++11提供的thread类定义线程对象。
4、pthread_create()函数在创建完毕后立即返回,它并不等待线程结束。
5、原线程与新线程如何执行与调度有关,程序不得依赖线程的先后执行的关系,可以使用同步机制确定线程的先后执行关系。
6、线程的退出方式有三种:
线程函数结束执行调用pthread_exit()函数显式结束
被其他线程"撤销"
7、使用pthread_join函数可等待子线程结束,获取子线程返回值
8、 线程分类:
可联线程:缺省设置,终止时并不自动清除(类似僵尸进程),主线程必须调用
分离线程:结束时自动清除,不能调用pthread_join()进行线程同步。
可联线程通过pthread_detach()变为分离线程后,再也不能调用pthread_join()变成为可联线程。
9、pthread_candcel()函数,撤销线程,已撤销的线程可以联结,且必须联结,以释放其资源,除非其为分离线程。
10、线程撤销类型与状态:异步可撤销:在其执行的任何时刻都可撤销
同步可撤销:线程可撤销,但撤销操作首先进入队列排队,在线程执行到特定撤销点时才可撤销
不可撤销:撤销请求会被系统自动忽略
11、线程的局部存储,让线程拥有数据的独立副本,不能简单赋值或读取
pthread_setspecific()函数:设置对应键的值
pthread_getspecific()函数:读取对应键的值
12、线程清除
线程清除函数:回调函数,单void *参数,无返回值
目的:销毁线程退出或被撤销时未释放的资源
pthread_cleanup_push(void (*routine)(void *)) 注册线程清除函数
pthread_cleanup_pop 取消线程清除注册,传非零参数将执行线程清除工作