ios線程鎖有哪幾種 線程進(jìn)入阻塞時(shí),線程會(huì)不會(huì)讓出CPU?
線程進(jìn)入阻塞時(shí),線程會(huì)不會(huì)讓出CPU?這取決于上下文切換的機(jī)制。通常,WindowsLinuxIOS會(huì)給每個(gè)線程指定的執(zhí)行時(shí)間。如果時(shí)間到了,就會(huì)出現(xiàn)計(jì)時(shí)器中斷信號(hào),線程將被動(dòng)地失去使用CPU的權(quán)利。
線程進(jìn)入阻塞時(shí),線程會(huì)不會(huì)讓出CPU?
這取決于上下文切換的機(jī)制。通常,WindowsLinuxIOS會(huì)給每個(gè)線程指定的執(zhí)行時(shí)間。如果時(shí)間到了,就會(huì)出現(xiàn)計(jì)時(shí)器中斷信號(hào),線程將被動(dòng)地失去使用CPU的權(quán)利。然而,一些簡(jiǎn)單的嵌入式系統(tǒng)沒有這種機(jī)制。上下文切換通常要求線程放棄CPU的使用權(quán),并將其交給內(nèi)核。如果當(dāng)前線程此時(shí)被阻塞,將導(dǎo)致死循環(huán)。在這個(gè)時(shí)候,我們應(yīng)該主動(dòng)調(diào)用函數(shù),比如重新調(diào)度或者向內(nèi)核發(fā)送信號(hào)。當(dāng)然,帶定時(shí)器的系統(tǒng)也可以調(diào)用這些函數(shù),要求當(dāng)前線程提前放棄CPU資源,避免在循環(huán)中浪費(fèi)等待時(shí)間。