阻塞通常是指线程被暂时挂起,不再占用 CPU 资源。具体来说,阻塞可能会导致线程进入休眠状态或者被置于等待队列中,不再处于可执行状态。这意味着该线程不再主动占用 CPU 时间片,因此不会将 CPU 用于执行任务。
阻塞和异步是处理并发编程中常见的两种方式,它们各有优缺点。以下是阻塞相对于异步的一些缺点:
资源浪费:在阻塞模式下,当一个线程被阻塞时,它无法执行其他任务,但却会持续占用系统的线程资源。这种资源浪费可能会导致系统的并发性能下降。
可伸缩性差:阻塞模式下,每个连接通常都会关联一个线程,当连接数增加时,线程数也会相应增加,这样会占用大量的系统资源,导致系统的可伸缩性较差。
上下文切换开销大:在阻塞模式下,由于线程被阻塞时需要切换到其他线程执行,频繁的线程切换会导致较大的上下文切换开销,降低系统的性能。
处理复杂度高:在阻塞模式下,需要额外的线程管理和同步机制来处理线程的阻塞和唤醒,增加了编程的复杂度和出错的可能性。
易造成死锁:当多个线程相互等待对方释放资源时,容易出现死锁情况,造成系统无法继续执行。