Rumah >pembangunan bahagian belakang >Golang >Apakah perbezaan antara goroutine dan coroutine

Apakah perbezaan antara goroutine dan coroutine

青灯夜游
青灯夜游asal
2023-01-10 18:31:121659semak imbas

Perbezaan: 1. Goroutine berkomunikasi melalui saluran, dan coroutine berkomunikasi melalui operasi hasil dan pemulihan. 2. Coroutine Goroutine tidak disegerakkan sepenuhnya dan boleh dijalankan secara selari menggunakan berbilang teras coroutine coroutine disegerakkan sepenuhnya dan tidak akan berjalan secara selari. 3. Goroutine boleh bertukar antara berbilang coroutine/benang berjalan dalam satu thread. 4. Aplikasi ini menduduki sejumlah besar CPU untuk masa yang lama Pengguna dalam goroutine mempunyai hak untuk menamatkan tugas ini, tetapi coroutine tidak.

Apakah perbezaan antara goroutine dan coroutine

Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.

Bahasa C#, Lua dan Python semuanya menyokong ciri coroutine. Coroutine dan goroutine adalah serupa dalam nama kedua-duanya boleh menjalankan fungsi atau pernyataan dalam persekitaran bebas, tetapi terdapat dua perbezaan antara mereka:

  • goroutine boleh dilaksanakan secara selari; >

  • Tetapi coroutine sentiasa dilaksanakan secara berurutan.
  • goroutine bermaksud selari (atau boleh digunakan secara selari), coroutine biasanya tidak, goroutine berkomunikasi melalui saluran; mudah untuk menggunakan semula logik daripada coroutine kepada goroutine.

Dalam erti kata yang sempit, goroutine mungkin berlaku dalam persekitaran berbilang benang, dan goroutine tidak dapat mengawal dirinya untuk mendapatkan sokongan keutamaan tinggi sentiasa berlaku dalam satu rangkaian, dan program coroutine perlu diserahkan secara aktif kawalan sebelum hos boleh mendapatkan kawalan dan memindahkan kawalan kepada coroutine lain.

Groutine menggunakan saluran untuk berkomunikasi dan coroutine menggunakan hasil dan menyambung semula operasi.

Konsep dan mekanisme operasi goroutine dan coroutine diperoleh daripada sistem pengendalian awal.

Mekanisme pengendalian coroutine ialah pemprosesan tugasan kooperatif yang memerlukan setiap aplikasi mesti mematuhi peraturan pemprosesan tugasan sistem pengendalian Apabila aplikasi tidak perlu menggunakan CPU, ia akan menyerahkan secara aktif atas hak penggunaan CPU. Jika pembangun secara tidak sengaja atau sengaja membiarkan aplikasi menduduki CPU untuk jangka masa yang lama, sistem pengendalian tidak dapat berbuat apa-apa, dan hasilnya komputer boleh menjadi tidak bertindak balas atau membeku dengan mudah.

Goroutine ialah pemprosesan tugasan awalan, yang hampir sama dengan pemprosesan tugas berbilang benang dan berbilang proses sedia ada. Kawalan aplikasi terhadap CPU akhirnya perlu diuruskan oleh sistem pengendalian Jika sistem pengendalian mendapati bahawa aplikasi menduduki sejumlah besar CPU untuk masa yang lama, pengguna mempunyai hak untuk menamatkan tugas.

Ringkasan perbezaan antara coroutine dan goroutine

Perbezaan 1:

    goroutine berkomunikasi melalui saluran
  • coroutine berkomunikasi melalui operasi hasil dan pemulihan
  • Perbezaan 2:


    antara penyegerakan coroutines goroutine , operasi selari berbilang teras boleh digunakan, bergantung pada reka bentuk saluran;
  • Coroutine coroutine disegerakkan sepenuhnya dan tidak akan berjalan selari
  • Perbezaan tiga:


    goroutine boleh bertukar antara berbilang coroutine dan berbilang benang, yang bukan sahaja boleh menggunakan berbilang teras, tetapi juga mengurangkan overhed pensuisan.
  • coroutine hanya berjalan dalam satu utas, hanya berjalan dalam satu thread
  • Perbezaan empat:


    Jika sistem pengendalian goroutine mendapati bahawa aplikasi menduduki sejumlah besar CPU untuk masa yang lama, pengguna mempunyai hak untuk menamatkan tugas.
  • coroutine Jika pembangun secara tidak sengaja atau sengaja membiarkan aplikasi menduduki CPU untuk jangka masa yang lama, sistem pengendalian tidak dapat berbuat apa-apa Akibatnya komputer mudah menjadi tidak bertindak balas atau ranap.
  • [Cadangan berkaitan:
Pergi tutorial video

, Pengajaran pengaturcaraan]

Atas ialah kandungan terperinci Apakah perbezaan antara goroutine dan coroutine. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn