Linux——线程信号量 读写锁 线程的私有数据
2014-10-25 20:35
267 查看
线程与进程
1.进程由于资源独立,进程的主要关注是解决资源共享
2.线程先天是数据共享,线程主要关注共享数据脏
1.互斥量(线程内)
读写锁
2.信号/条件量调度(线程之间)
信号量
一.线程的信号量
1.定义信号量sem_t
2.初始化信号量sem_init
3.操作信号量sem_post sem_wait
4.释放信号量sem_destroy
5.其他函数sem_getvalue
案例:
创建一个子线程
子线程-信号量(阻塞)
主线程+信号量(解除阻塞)
体会:
信号量可以累加
+-操作单位是1
sem.c
编程完成:
摇奖程序,继续暂停7位随机数
信号量/条件量/信号?
目的:选择哪种技术实现?
1.无法使用互斥与读写锁实现.
2.信号实现不稳定.
3.没有互斥建议不考虑条件量.
4.最佳选择信号量.
二.线程的读写锁
pthread_rwlock_t;
pthread_rwlock_init;
pthread_rwlock_destroy;
pthread_rwlock_rdlock;
pthread_rwlock_wrlock;
pthread_rwlock_unlock;
读读兼容
写写互斥
读写互斥
作用主要是为IO操作设计.
三.线程私有数据(了解)
pthread_key_create
pthread_key_delete
1.进程由于资源独立,进程的主要关注是解决资源共享
2.线程先天是数据共享,线程主要关注共享数据脏
1.互斥量(线程内)
读写锁
2.信号/条件量调度(线程之间)
信号量
一.线程的信号量
1.定义信号量sem_t
2.初始化信号量sem_init
3.操作信号量sem_post sem_wait
4.释放信号量sem_destroy
5.其他函数sem_getvalue
案例:
创建一个子线程
子线程-信号量(阻塞)
主线程+信号量(解除阻塞)
体会:
信号量可以累加
+-操作单位是1
sem.c
#include <pthread.h> #include <semaphore.h> #include <stdio.h> sem_t sem;// void *run(void*d) { while(1) { //3. sem_wait(&sem); printf("解除\n"); } } main() { pthread_t tid; //2 sem_init(&sem,0,5); pthread_create(&tid,0,run,0); while(1) { // sleep(1); sem_post(&sem);//加信号量(信号量可以累加) } }
编程完成:
摇奖程序,继续暂停7位随机数
信号量/条件量/信号?
目的:选择哪种技术实现?
1.无法使用互斥与读写锁实现.
2.信号实现不稳定.
3.没有互斥建议不考虑条件量.
4.最佳选择信号量.
二.线程的读写锁
pthread_rwlock_t;
pthread_rwlock_init;
pthread_rwlock_destroy;
pthread_rwlock_rdlock;
pthread_rwlock_wrlock;
pthread_rwlock_unlock;
读读兼容
写写互斥
读写互斥
作用主要是为IO操作设计.
三.线程私有数据(了解)
pthread_key_create
pthread_key_delete
相关文章推荐
- linux c++多线程 线程私有数据 互斥量 条件变量 信号量 读写锁 自旋锁 屏障
- linux下C语言多线程(二)线程的私有数据
- ZT linux 线程私有数据之 一键多值技术
- 线程同步(信号量,互斥,条件变量) 分类: linux应用程序 2008-04-08 09:43 2587人阅读 评论(1) 收藏 举报 进行多线程编程,最头疼的就是那些共享的数据。因为你无法知道哪个线程会在哪个时候对它进行操作,你也无法
- [GNU/Linux] Linux系统调用-线程相关(三):私有数据
- linux线程之线程私有数据 pthread_key_create方法的学习
- linux线程数据及信号量详解
- linux线程的私有数据
- 【Linux系统编程】线程私有数据
- 【Linux】深入理解线程(线程同步、互斥量mutex、死锁、读写锁、条件变量、信号量)
- linux 线程私有数据之一键多值技术TSD池
- unix/linux下线程私有数据实现原理及使用方法
- linux线程私有数据---TSD池
- linux线程的私有数据
- unix/linux下线程私有数据实现原理及使用方法
- unix/linux下线程私有数据实现原理及使用方法
- Linux线程私有数据
- linux 线程私有数据 (一键多值)
- [Linux线程]使用线程的私有数据
- [转] unix/linux下线程私有数据实现原理及使用方法