Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah penyegerakan, tak segerak, menyekat dan tidak menyekat dalam Python?

Apakah penyegerakan, tak segerak, menyekat dan tidak menyekat dalam Python?

王林
王林ke hadapan
2023-04-24 09:37:071478semak imbas

    1. Pengenalan status

    Sebelum memahami konsep lain, kita mesti terlebih dahulu memahami beberapa keadaan proses. Semasa menjalankan program, disebabkan oleh kawalan algoritma penjadualan sistem pengendalian, program akan memasuki beberapa keadaan: sedia, berjalan dan disekat.

    • Keadaan sedia: Apabila proses telah diperuntukkan semua sumber yang diperlukan kecuali CPU, ia boleh dilaksanakan serta-merta selagi ia memperoleh pemproses Keadaan proses pada masa ini dipanggil keadaan sedia.

    • Keadaan Pelaksanaan/Berjalan (Berjalan) Apabila proses telah memperoleh pemproses dan programnya sedang dilaksanakan pada pemproses, keadaan proses pada masa ini dipanggil keadaan pelaksanaan.

    • Apabila proses yang dilaksanakan dalam keadaan Disekat tidak dapat dilaksanakan kerana menunggu peristiwa berlaku, proses tersebut akan menyerahkan pemproses dan berada dalam keadaan disekat. Terdapat banyak peristiwa yang menyebabkan penyekatan proses, seperti menunggu I/O selesai, penimbal aplikasi tidak dapat berpuas hati, menunggu surat (isyarat), dll.

    2. Penyegerakan dan tak segerak

    Apa yang dipanggil tak segerak bermakna anda tidak perlu menunggu tugas bergantung selesai, tetapi hanya memaklumkan tugas bergantung kepada kerja yang perlu diselesaikan, dan tugas yang bergantung juga Laksanakan serta-merta, selagi anda menyelesaikan keseluruhan tugasan, ia akan diselesaikan. Sama ada tugas yang bergantung itu benar-benar selesai pada akhirnya, tugas yang bergantung padanya tidak dapat ditentukan, jadi ia adalah urutan tugas yang tidak boleh dipercayai.

    Contoh

    • Cara pertama: pilih untuk menunggu dalam barisan;

    • Cara kedua: pilih untuk mengambil yang kecil nota di atasnya saya mempunyai nombor saya, dan apabila giliran mencapai nombor saya, orang di kaunter akan memberitahu saya bahawa giliran saya untuk mengendalikan perniagaan; bekas (menunggu dalam talian) adalah penyegerakan Menunggu pemberitahuan mesej, iaitu, saya perlu menunggu untuk status perniagaan bank; pemberitahuan secara tidak segerak. Dalam pemprosesan mesej tak segerak, orang yang menunggu pemberitahuan mesej (dalam kes ini, orang yang menunggu untuk mengendalikan perniagaan) sering mendaftarkan mekanisme panggil balik Apabila peristiwa yang ditunggu dicetuskan, mekanisme pencetus (dalam kes ini, orang di counter) melewati beberapa jenis mekanisme panggil balik Mekanisme (dalam kes ini nombor yang ditulis pada sekeping kertas kecil, dipanggil nombor) mencari orang yang menunggu acara itu.

    • 3. Menyekat dan tidak menyekat

    Contoh

    Teruskan contoh di atas, sama ada anda sedang beratur atau menggunakan nombor untuk menunggu pemberitahuan, jika semasa proses menunggu, pelayan Jika anda tidak boleh melakukan apa-apa lagi kecuali menunggu pemberitahuan mesej, maka mekanisme menyekat, yang ditunjukkan dalam program, iaitu, program telah disekat pada panggilan fungsi dan tidak boleh terus dilaksanakan.

    Sebaliknya, sesetengah orang suka membuat panggilan dan menghantar mesej teks semasa menunggu sambil mengendalikan perkhidmatan ini di bank Negeri ini tidak menyekat kerana dia (pelayan) tidak disekat pada pemberitahuan mesej ini. , tetapi tunggu sambil melakukan perkara anda sendiri.

    Nota: Borang tidak menyekat segerak sebenarnya tidak cekap Bayangkan anda sedang bercakap di telefon dan perlu mendongak untuk melihat jika baris gilir telah sampai kepada anda. Jika membuat panggilan dan memerhati kedudukan baris gilir dianggap sebagai dua operasi program, atur cara perlu bertukar-tukar antara dua tingkah laku yang berbeza ini, yang jelas tidak cekap borang tidak menyekat tak segerak adalah Tiada masalah seperti itu; kerana membuat panggilan adalah perniagaan anda (pelayan), dan memberitahu anda adalah perniagaan kaunter (mekanisme pencetus mesej), dan program tidak bertukar-tukar antara dua operasi yang berbeza.

    4. Segerak/tak segerak dan menyekat/tidak menyekat

    1. mesej Dicetuskan (dimaklumkan) bermakna menerima nota kecil Jika dia tidak boleh meninggalkan bank untuk melakukan perkara lain dalam tempoh ini, maka jelas sekali orang ini disekat dalam operasi menunggu ini.

    Operasi tak segerak boleh disekat, tetapi ia tidak disekat semasa memproses mesej, tetapi disekat sementara menunggu pemberitahuan mesej.

    2. Borang tidak menyekat segerak

    Bayangkan anda sedang membuat panggilan telefon dan perlu melihat ke atas untuk melihat sama ada barisan telah sampai kepada anda Jika anda berfikir untuk menelefon dan memerhati barisan kedudukan sebagai Jika terdapat dua operasi dalam program, program perlu bertukar-tukar antara dua tingkah laku yang berbeza ini, yang boleh difikirkan tidak cekap.

    3. Borang tidak menyekat tak segerak

    Oleh kerana panggilan adalah urusan (pelayan) anda, dan memberitahu anda adalah urusan kaunter (mekanisme pencetus mesej), program ini tidak mempunyai dua Beralih yang berbeza ke depan dan ke belakang semasa operasi.

    Sebagai contoh, orang ini tiba-tiba menyedari bahawa dia ketagih rokok dan perlu keluar untuk merokok, jadi dia memberitahu pengurus lobi bahawa apabila nombornya dicapai, sila pergi ke luar dan memberitahu saya, kemudian dia tidak akan Menyekat pada operasi menunggu ini, secara semulajadi ini adalah kaedah tak segerak + tidak menyekat.

    Atas ialah kandungan terperinci Apakah penyegerakan, tak segerak, menyekat dan tidak menyekat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam