线程-Pthread 笔记

Posted hntea-hong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程-Pthread 笔记相关的知识,希望对你有一定的参考价值。

线程-Pthread

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) 信号处理

以上是关于线程-Pthread 笔记的主要内容,如果未能解决你的问题,请参考以下文章

线程池学习笔记

Pthread-----笔记1

如果在已经返回的线程上调用pthread_detach会发生什么

pthread_join / __pthread_internal_find 函数发生SIGABRT的crash (Android)

LIBUV学习笔记 uv_barrier_xxx与pthread_barrier_xxx相关

应该如何在 pthread() 中使用 yield?