线程同步的方式有哪些?

临界区

当多个线程访问一个独占性共享资源时,可以使用临界区对象。拥有临界区的线程可以访问被保护起来的资源或代码段,其他线程若想访问,则被挂起,直到拥有临界区的线程放弃临界区为止,以此达到用原子方式操 作共享 资源的目的。

事件

事件机制,则允许一个线程在处理完一个任务后,主动唤醒另外一个线 程执行任务。

互斥量

互斥对象和临界区对象非常相似,只是其允许在进程间使用,而临界 区只限制与同一进程的各个线程之间使用,但是更节省资源,更有效率。

信号量

当需要一个计数器来限制可以使用某共享资源的线程数目时,可以使用“信号量”对象。

区别

  • 互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说互斥量可以跨越进程使用,但创建互斥量需要的资源更多,所以如果只为了在 进程内部是用的话使用临界区会带来速度上的优势并能够减少资源占用
    量 。因为互斥量是跨进程的互斥量一旦被创建,就可以通过名字打开它。
  • 互斥量,信号量,事件都可以被跨越进程使用来进行同步数据操作。

回复

我来回复
  • 暂无回复内容

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部