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

线程与进程
        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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值