linux多线程的互斥与同步

文章出处:http://www.linuxidc.com/Linux/2011-03/33227.htm

                    http://blog.163.com/helloworld_zhouli/blog/static/2033711212012240502579/


    任务间的关系有两种:

    1.  直接关系;

    2.  间接关系;

    例如:

    1.  任务A对某个缓冲区进行写操作,任务B从这个缓冲区进行读操作。那么A和B的关系就是直接的关系,那么,实现这种直接关系的机制就是同步

    2.  任务A要使用打印机,任务B也要使用打印机,那么,只有在任务A使用结束的情况下任务B才能使用打印机,所以A和B间的关系是间接的关系,要实现这种间接的关系的机制是互斥


    在linux中,实现线程间的互斥和同步的主要机制是:互斥锁和条件变量。

    条件变量用于线程需要在某种条件下才去保护它将要操作的临界区的情况下,从而避免了线程不断轮询检查该条件是否成立而降低效率;

    条件变量的一个典型应用场景是生产者与消费者模式:

    消费者线程获取互斥锁进入临界区后,判断若此时没有可以消费的产品,则解锁进入等待模式,当生产者线程生产出一个新的产品后就发送信号通知消费者继续工作,这样就达到了对临界区操作的互斥保护和线程间同步的作用。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值