八股文打卡day20——操作系统(3)

面试题:线程同步的方式有哪些?

我的回答:

多线程同时访问和修改某个数据的话,会造成数据的不一致和冲突问题,所以就需要线程同步,线程同步的方式有:
1.互斥锁
互斥锁就是,当一个资源被访问和操作时,会对这个资源加锁,把这个资源锁定,其他线程不能对其进行操作。直到上一个线程操作完成之后,会释放互斥锁,其他资源才可以进行操作。
2.信号量
信号量是互斥锁的扩展。允许多个线程同时访问同一个资源,当信号量大于1时,可以对资源进行访问;信号量为0时,其他线程阻塞。信号量为几,代表可以同时几个线程访问该资源。
3.条件变量
线程可以睡眠等待,而不是忙等待,这样可以节约CPU的资源。等某个条件成立的时候,线程再被唤醒。
4.读写锁
多个线程可以同时读取同一个数据,但是只允许一个线程对其进行写操作。读写锁适用于读多写少的场景。
5.自旋锁
类似于互斥锁。当资源被锁定之后,其他线程会在一个循环中等待,直到锁被释放。自旋锁适用于锁被持有时间较短的场景。
6.原子操作
确保某个操作是在单个步骤中完成,不会被其他线程所干扰。一般由硬件支持。
7.栅栏
就是允许多个线程等待,直到所有的线程都到达一个点之后,再同时执行。
8.事件
线程等待某个事件发生时,某个事件被触发了,等待的线程会被唤醒。

回答八股的时间:2024.01.04

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值