Memahami Percanggahan dalam Tempoh Fungsi WinAPI Sleep()
Apabila menggunakan fungsi WinAPI Sleep() dengan parameter 1 milisaat, ia diperhatikan bahawa benang sebenarnya berhenti seketika untuk tempoh yang lebih lama, biasanya sekitar 15 milisaat. Fenomena ini menimbulkan kebimbangan tentang isu sistem yang berpotensi.
Kuantiti Masa dalam Windows
Windows menggunakan mekanisme pengkuantitian masa untuk penjadualan urutannya. Ini bermakna sistem menjadualkan benang dalam selang diskret, yang dikenali sebagai kuantum. Tempoh tepat selang ini berbeza-beza berdasarkan beberapa faktor, termasuk versi dan edisi Windows. Secara purata, Windows 7 beroperasi dengan kuantum masa kira-kira 15.6 milisaat.
Kesan pada Tempoh Tidur()
Hasil pengkuantitian masa, sebarang bukan sifar hujah kelewatan yang diberikan kepada Sleep() dibundarkan ke kuantum terdekat. Ini menerangkan sebab panggilan Sleep(1) sebenarnya menjeda urutan selama 15 milisaat, iaitu kuantum masa paling hampir kepada 1 milisaat.
Pengesahan
Untuk mengesahkan gelagat ini , anda boleh melaksanakan coretan kod yang disediakan. Menjalankan kod mungkin menghasilkan hasil yang berbeza bergantung pada tetapan resolusi pemasa sistem. Jika resolusi pemasa seluruh sistem telah ditetapkan secara manual kepada 1 milisaat, anda mungkin melihat tempoh tidur yang lebih pendek. Walau bagaimanapun, secara lalai, Windows 7 menggunakan resolusi pemasa 15.6 milisaat, yang membawa kepada masa tidur lanjutan yang diperhatikan.
Kesimpulan
Percanggahan dalam fungsi Sleep() tempoh dikaitkan dengan mekanisme pengkuantitian masa yang wujud dalam penjadual benang Windows. Penggenapan ini memastikan penjadualan urutan dilakukan dengan cekap dan boleh diramal, menghalang kemungkinan konflik penjadualan urutan.
Atas ialah kandungan terperinci Mengapa WinAPI Sleep(1) Menghasilkan Jeda 15 Milisaat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!