多線程沒有提供真正意義上的並行處理,每核CPU在某一時刻仍然只能運行一個進程,由於線程1和線程2是共享某核CPU資源的。能夠簡單的認爲每核CPU在獨立執行進程的能力上,有一個資源是惟一的,線程1獲取了該資源,線程2就無法獲取。 可是,線程1和線程2在不少方面上是能夠並行執行的。好比能夠並行取指、並行解碼、並行執行指令等。因此雖然單核在同一時間只能執行一個進程,但線程1和線程2能夠互相幫助,加速進程的執行。 而且,若是線程1在某一時刻獲取了該核執行進程的能力,假設此刻該進程發出了IO請求,因而線程1掌握的執行進程的能力,就能夠被線程2獲取,即切換到線程2。這是在執行線程間的切換,是很是輕量級的。(WIKI: if resources for one process are not available, then another process can continue if its resources are available)