几种同步机制

 

Cratical Section(临界区),适用范围是单一进程的各线程之间。

一个局部性对象,不是一个核心对象。

不能同时有一个以上的 cratical section。

无法侦测是否已被某个线程放弃。

 

 

Mutex

Mutex是一个核心对象。可以在不同的线程之间实现“排他性占有”,

即使线程分属不同进程。

一个核心对象。

如果拥有mutex的线程结束,会产生一个"abandoned"错误信息。

可以具体化名字,可以被其他进程开启。

只能被拥有它的那个线程释放。

 

 

Semaphore 被用来追踪有限的资源。

一个核心对象。

没有拥有者。

可以具体化名字,可以被其他进程开启。

可以被任意一个线程释放。

 

 

Event object 通常用于overlaped IO

一个核心对象。

适用于设计新的同步对象。

请求可以遗失掉。

可以具体化名字,可以被其他进程开启。

 

 

Interlocked Variable是一组函数,通常被使用于spin-lock(一种busy-loop,被预期在极短的时间内运行,所以有最小的负荷),也被经常用于引用计数特点

允许对4字节的数值有些基本的同步操作,不需动用临界区或者互斥器 。     

在SMP(Symmetric Multi-Processors)操作系统中亦可有效的运作。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值