Ano ang pagkakaiba sa pagitan ng isang coroutine at isang thread?
Ano ang pagkakaiba sa pagitan ng isang coroutine at isang thread?

Video: Ano ang pagkakaiba sa pagitan ng isang coroutine at isang thread?

Video: Ano ang pagkakaiba sa pagitan ng isang coroutine at isang thread?
Video: 🔴HEBOH!! TANTANGAN BU SOFIATUL AKAN MUALAF, JIKA YG DIKORBANKAN ADALAH ISMAEL, SANGGAH DGN DATA 2024, Mayo
Anonim

Isang importante pagkakaiba sa pagitan ng mga thread at mga coroutine iyan ba mga thread ay karaniwang preemptively nakaiskedyul habang mga coroutine hindi. kasi mga thread maaaring i-reschedule sa anumang sandali at maaaring magsagawa ng sabay-sabay, mga programang gumagamit mga thread dapat mag-ingat sa pag-lock.

Sa ganitong paraan, ano ang mga coroutine na pinapatakbo nito sa iba't ibang thread?

Mga Coroutine walang gagawin gawin kasama Mga thread . Coroutine paraan pwede isasagawa nang paisa-isa sa paglipas ng panahon, ngunit ang lahat ng mga proseso ay ginagawa pa rin ng isang pangunahing Thread . Kung mayroon kang higit sa isang lohikal na CPU, maraming mga thread ay pinaandar sa magkaiba Mga CPU.

Bukod pa rito, ano ang thread sa programming? A thread sa computer science ay maikli ang a thread ng pagpapatupad. Mga thread ay isang paraan para sa a programa upang hatiin (tinatawag na "split") ang sarili nito sa dalawa o higit pang sabay-sabay (o pseudo-sabay-sabay) na tumatakbong mga gawain.

Ang dapat ding malaman ay, ano ang Coroutine na tumatakbo sa bagong thread?

Ano ang nangyayari sa a coroutine ay iyon ay tumakbo sa pangunahing thread bawat frame at i-execute hanggang sa makagawa ito ng yield - pagkatapos ay magsususpindi ito hanggang sa matugunan ang kundisyon ng yield. A thread mabisa tumatakbo kasabay ng iba pang code (totoo lang ito kapag marami kang core).

Kailan ko dapat gamitin ang runBlocking?

Actually ikaw gumamit ng runBlocking upang tawagan ang mga suspending function sa "blocking" code na kung hindi man ay hindi matatawag doon o sa madaling salita: ikaw gamitin ito upang tawagan ang mga function ng suspendido sa labas ng konteksto ng coroutine (sa iyong halimbawa ang block na ipinasa sa async ay ang function na suspendido).

Inirerekumendang: