Linux——线程信号量 读写锁 线程的私有数据

来源:互联网 发布:工地临时用电计算软件 编辑:程序博客网 时间:2024/04/18 23:59
线程与进程
        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;//2sem_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
0 0
原创粉丝点击