Apakah perbezaan antara coroutine dan benang?
Apakah perbezaan antara coroutine dan benang?

Video: Apakah perbezaan antara coroutine dan benang?

Video: Apakah perbezaan antara coroutine dan benang?
Video: Testing Coroutines on Android (Android Dev Summit '19) 2024, November
Anonim

Satu yang penting perbezaan antara benang dan coroutine ialah benang biasanya dijadualkan secara preemptive sementara coroutine bukan. Kerana benang boleh dijadualkan semula pada bila-bila masa dan boleh melaksanakan serentak, program menggunakan benang mesti berhati-hati dalam mengunci.

Dengan cara ini, apakah coroutine yang dijalankan pada urutan yang berbeza?

Coroutines tiada apa-apa buat dengan Benang . Coroutine kaedah boleh dilaksanakan sekeping demi sekeping dari semasa ke semasa, tetapi semua proses masih dilakukan oleh satu utama Benang . Jika anda mempunyai lebih daripada satu CPU logik, banyak benang dilaksanakan pada berbeza CPU.

Selain itu, apakah benang dalam pengaturcaraan? A benang dalam sains komputer adalah singkatan untuk a benang daripada pelaksanaan. Benang adalah cara untuk a program untuk membahagikan (disebut "berpecah") sendiri kepada dua atau lebih secara serentak (atau pseudo-serentak) menjalankan tugas.

Juga perlu diketahui ialah, apakah Coroutine yang dijalankan pada urutan baharu?

Apa yang berlaku dengan a coroutine adalah bahawa ia adalah lari pada utama benang setiap bingkai dan laksanakan sehingga ia menghasilkan hasil - kemudian ia akan ditangguhkan sehingga syarat hasil dipenuhi. A benang dengan berkesan berlari pada masa yang sama dengan kod lain (ini hanya benar apabila anda mempunyai berbilang teras).

Bilakah saya harus menggunakan runBlocking?

Sebenarnya awak gunakan runBlocking untuk memanggil fungsi penggantungan dalam kod "menyekat" yang sebaliknya tidak boleh dipanggil di sana atau dengan kata lain: anda guna ia untuk memanggil fungsi gantung di luar konteks coroutine (dalam contoh anda blok yang dihantar kepada async ialah fungsi gantung).

Disyorkan: