同步异步&同步互斥&几种锁

同步异步

定义:同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用

同步:

在某些地方,多个并发进程需要相互等待或交换信息而产生的直接制约关系,叫做同步。

并发进程之间不是相互排斥临界资源,而是相互依赖的关系。进一步地说,同步关系就是前一个进程的输出作为后一个进程的输入;当第一个进程没有输出时,第二个进程必须等待。具有同步关系的一组并发进程,相互发送的信息称为消息或事件。

异步:

异步与同步是相对的:同步是顺序执行进程,执行完一个进程再执行下一个进程,需要进程之间等待、协调运行;异步是进程之间彼此独立,在等待其他进程的运行时,本进程继续做自己的事,不需要等待其他进程完成后再工作。

异步与多线程不是同等关系:异步是最终目的,多线程只是我们实现异步的一种方式。异步是让调用方法的主线程不用同步等待另一线程的完成,主线程可以同时做其它事情。

实现异步可以采用多线程技术或者交给另外的进程处理。

注:阻塞和非阻塞 强调的是程序在等待调用结果(消息,返回值)时的状态. 阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数没有返回而已,即同步等待时什么都不干,白白占用着资源。

同步互斥

同步互斥强调的是进程间的处理关系;
同步与互斥机制是用于控制多个任务对某些特定资源的访问策略

临界资源:

对多个进程或者线程都可见的资源,容易产生争夺,我们将这类资源称之为临界资源

临界区:

指一段代码对临界资源操作的代码区称之为临界区(也就是执行代码)

很多资料都描述同步也是一种高级的互斥,互斥也是某一种程度变相的同步,其实这么说主要是因为同步和互斥的目的是相同的都是为了解决临界资源争夺。

同步:

同步是一种合作关系,为完成某种任务而建立的多个进程或者线程之间的协调调用,次序等待,传递消息告知资源占用情况

互斥:

互斥是一种制约关系,当一个进程或者多个进程进入临界区后会进行加锁操作,此时其他进程(线程)无法进入临界区,只有当该进程(线程)使用后进行解锁其他人才可以使用这种技术往往是通过阻塞完成

几种锁

自旋锁spinlock

自旋锁的主要特征是使用者在想要获得临界区执行权限时,如果临界区已经被加锁,那么自旋锁并不会阻塞睡眠,等待系统来主动唤醒,而是原地忙轮询资源是否被释放加锁,自旋就是自我旋转,这个名字还是很形象的。自旋锁有它的优点就是避免了系统的唤醒,自己来执行轮询,如果在临界区的资源代码非常短且是原子的,那么使用起来是非常方便的&#x

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值