- 特点:
- 有joinable和detached两种类型的线程。joinable(默认)可以被其他线程回收和杀死,但其存储器、资源不会在显式和隐式退出后被回收。detached不可以被回收和杀死,但其资源会在结束后自动回收。
- 线程属性可以存在pthread_attr_t类型的变量中,它包含着一个线程可以设置的所有属性,并需要初始化才能使用。同理,互斥锁和条件变量属性使用类pthread_mutexattr_t / pthread_condattr_t。
- pthread中大多数产生交互的函数和处理函数都产生返回值,但也可以不获取返回值来使用这些函数(不加n =)。这些返回值大多数以0表示正确执行,或以错误代码表示未能执行的原因。
- pthread中线程可以设置以下属性:detachstate(同步状态),schedparam(调用优先级),schedpolicy(调度策略),inheritsched(显式指定调度策略 / 继承调度策略),scope(竞争cpu策略)
- pthread的互斥锁是pthread_mutex_t类型的变量。其类型决定了在申请一个已上锁的锁的时候的表现。NORMAL在对锁进行错误操作(unlock未加锁的锁 / lock已经上锁的锁)会导致死锁。ERRORCHECK会返回错误代码。RECURSIVE可以重复上锁并计数。
- 要使用条件变量,首先需要由本线程加一把普通锁,在wait产生,线程休眠时会自动解锁,并在条件满足线程继续运行时自动加锁。这是为了方便资源调度通讯以及防止多个线程同时进入等待导致队列错误。