线程间机制(同步和互斥)

线程间机制
{
	多线程共享同一个进程子地址空间
	优点: 线程间很容易进行通信
			1、 通过全局变量实现数据共享和交换
	缺点:	多个线程同时访问共享对象时需要引入同步和互斥机制
}
线程的同步和互斥
{	同步
	{
		同步:指的是多任务(线程)按照约定的顺序相互配合完成一件事情
		同步机制基于信号量提出,信号量来决定线程是继续运行还是阻塞等待
		P---V操作
		信号量是一种受保护的变量(信号量的值是非负整数)
		{
			初始化
			P操作(申请资源)// 信号量 - 1
			V操作(释放资源)// 信号量 + 1
		}
	}
	互斥
	{
		互斥:保证共享数据资源操作的完整性
	}
}
信号量操作(同步)
{
	#include<semaphore.h>
	int sem_init(sem_t *sem, int pshared, unsigned int value); //初始化
	sem: 初始化的信号量
	pshared:信号量共享的范围(0:线程间使用, 非0: 进程间使用)
	value: 信号量初值
	返回值:成功: 0
			出错:-1
		
	int sem_wait(sem_t *sem); // P操作(申请资源)
	sem:信号量
	返回值:成功: 0
			出错:-1
			
	int sem_post(sem_t *sem); // V操作(释放资源)
	sem: 信号量
	返回值:成功: 0
			出错:-1	
}
线程间互斥
{
	互斥锁主要是用来保护临界资源(任何时候最多只能有一个线程能访问该资源)
	#include<phtread.h>
	
	int pthread_mutex_init(pthread_mutex_t *mutex, pthread_mutexattr_t *attr); // 初始化互斥锁
	mutex: 	互斥锁
	attr:	互斥锁属性 // NULL表示缺省属性
	返回值:成功: 0
			出错:返回错误号
	
	int pthread_mutex_lock(pthread_mutex_t *mutex); 	// 申请互斥锁
	mutex:	互斥锁
	返回值:成功: 0
			出错:-1
	
	int pthread_mutex_unlock(pthread_mutex_t *mutex); 	// 释放互斥锁
	mutex:	互斥锁
	返回值:成功: 0
			出错:返回错误号
	
	
			
}	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值