线程同步与阻塞的关系?同步一定阻塞吗?阻塞一定同步吗?

同步是个过程,阻塞是线程的一种状态。多个线程操作共享变量时可能会出现竞争。这时需要同步来防止两个以上的线程同时进入临界区,在这个过程中,后进入临界区的线程将阻塞,等待先进入的线程走出临界区。
线程同步不一定发生阻塞!!!线程同步的时候,需要协调推进速度,互相等待和互相唤醒会发生阻塞。
同样,阻塞也不一定同步。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 进程:进程是计算机中的一个执行单元,它是操作系统进行资源分配和调度的基本单位。每个进程都拥有独立的地址空间、内存、文件句柄和其他系统资源。进程之间相互独立,彼此之间不能直接访问对方的内存空间。 2. 线程:线程是进程中的一个执行单元,它是进程中的一个分支。每个线程都运行在进程的地址空间内,可以访问进程的内存空间、文件句柄和其他系统资源。同一个进程中的多个线程共享该进程的资源,可以相互通信和协作。 3. 线程同步方法: (1)临界区:将需要互斥访问的代码段包含在一个临界区(Critical Section)中,同一时刻只允许一个线程进入临界区执行,其他线程必须等待。临界区可以使用互斥量(Mutex)来实现。 (2)互斥量:互斥量是操作系统提供的一种线程同步机制,它可以保证同一时刻只有一个线程访问共享资源。当一个线程获得了互斥量的锁时,其他线程必须等待该线程释放锁才能进入临界区。 (3)信号量:信号量是一个计数器,用来控制同时访问共享资源的线程数量。当信号量的值为正数时,表示还有可用资源,线程可以访问;当信号量的值为零时,表示资源已经被占用,线程必须等待;当信号量的值为负数时,表示有多个线程在等待资源,这时线程会被加入到等待队列中。 (4)事件(Event):事件是一种线程同步机制,它可以在多个线程之间传递信号。当一个线程需要等待某个事件时,它会阻塞自己等待事件发生,当事件发生时,操作系统会通知等待该事件的线程继续执行。 (5)读写锁:读写锁是一种特殊的锁,它允许多个线程同时读取共享资源,但只允许一个线程写入共享资源。当一个线程获得读锁时,其他线程也可以获得读锁,但不能获得写锁;当一个线程获得写锁时,其他线程不能获得读锁和写锁。这种锁可以提高多读单写场景下的并发性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值