1.作用:
a) 单进程环境中执行多个任务
b) 一个进程中的所有线程可以访问该进程的组成部件:文件描述符和内存等
c) 资源一致性
2.线程标识
a) 每个线程有一个ID: pthread_t 数据类型
3.线程启动相关函数
a) 比较两个线程的ID pthread_equal();
b) 获取自身的线程ID pthread_self();
c) 创建线程 pthread_creat();
d) 终止线程 pthread_exit();
4.线程资源同步
a) 互斥量(mutex):
i. 初始化 pthread_mutex_init();
ii. 加锁: pthread_mutex_lock();
iii. 锁获取:pthread_mutex_trylock();
iv. 解锁: pthread_mutex_unlock();
v. 销毁: pthreadd_mutex_destory();
b) 读写锁
i. 初始化:pthread_rwlock_init();
ii. 加锁:
1. pthread_rwlock_rdlock()
2. pthread_rwlock_wrlock()
iii. 锁获取:
1. pthread_rwlock_tryrdlock()
2. pthread_rwlock_trywrlock()
iv. 解锁: pthread_rwlock_unlock()
v. 销毁: pthread_rwlock_destory();
c) 条件变量
i. 条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定条件发生
ii. 条件本身是由互斥量保护的
iii. 线程在改变条件状态前必须首先锁住互斥量,既锁住互斥量之后才能计算条件
iv. 编程思路
1. 初始化条件变量
a) pthread_cond_init();
b) static pthread_cond_t xxx = PTHREAD_COND_INITIALIZER
2. 等待条件变为真
a) pthread_cond_wait()
b) pthread_cond_timewait()
3. 条件成立唤醒
a) pthread_cond_signal() ; 针对等待该条件的某个线程
b) pthread_cond_broadcast() ;唤醒等待该条件的所有线程
5.线程和信号
a) 每个线程都有自己的信号屏蔽字,信号处理是所有线程共享的
b) 进程中的信号是递送到单个线程的
c)
6.信号编程思路
a) 创建信号
b) 等待信号
c) 发送信号
d) 信号处理