【Linux】生产者和消费者问题

        我们在操作系统中讲到进程同步的问题的时候,都会讲一些经典的例子,其中就有“生产者和消费者的问题”。生产者和消费者的规则是生产者生产一个产品后,消费者才能消费,并且在消费者还没有消费已经生产的产品的时候,生产者是不能再进行生产的。先说一下互斥量和条件变量。

1、mutex (互斥量)
       多个线程同时访问共享数据时可能会冲突,这跟前⾯面讲信号时所说的可重入性是同样的问 题。比如:两个线程都要把某个全局变量增加1,这个操作在某平台需要三条指令完成: (非原子操作)
1. 从内存读变量值到寄存器
2. 寄存器的值加1
3. 将寄存器的值写回内存
下列程序运行每次结果不同。


Mutex用pthread_mutex_t类型的变量表示,可以这样进行初始化和销毁。

返回值:成功返回0,失败返回错误号。
       pthread_mutex_init函数对Mutex做初始化,参数attr设定Mutex的属性,如果attr为NULL则表示缺省属性。用 pthread_mutex_init函数初始化的Mutex可以用pthread_mutex_destroy销毁。如果Mutex变量 是静态分配的(全局变量 或static变量),也可以 用宏定义PTHREAD_MUTEX_INITIALIZER 来初始化, 相当于用pthread_mutex_init初始化并且attr参数为NULL。
Mutex的加锁和解锁 操作可以用下列函数:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值