我之前看过文章说的是锁降低性能降低在多个线程争夺锁,内核态和用户态之间的切换,想问一下切换在哪?锁是在内核中管理的么?

解决方案 »

  1.   

    应该这么理解,比如2个线程用一个锁。当A先调用锁,锁住,然后进行处理。这时候B假如要用该锁,那就必须等A解锁才可以使用,这个时候B是阻塞的。
      

  2.   

    linux上下文切换的代价是很大的。
      

  3.   

    楼上说的很好了,补充一下二楼说的,切换发生在B阻塞发生时,本来B线程是当前正在占用CPU的,由于发生了阻塞,所以B线程被切换了,CPU又调度到别的线程执行。