Menyiasat Tidur() Tidur Lebih Daripada Jangkaan
Fungsi Windows API's Sleep() ialah alat serba boleh untuk menggantung pelaksanaan benang. Walau bagaimanapun, sesetengah pengguna menghadapi tingkah laku yang tidak dijangka di mana fungsi tidur lebih lama daripada yang dimaksudkan. Artikel ini akan menyelidiki isu itu, mengkaji kejadian biasa dan punca yang berpotensi.
Kelakuan dan Jurang Tempoh
Apabila memanggil Sleep(1) dalam gelung 100 kali, jumlah masa tidur diperhatikan ialah 1500ms dan bukannya 100ms. Perbezaan ini menunjukkan bahawa tempoh tidur sebenar adalah lebih kurang 15ms setiap lelaran. Ambil perhatian bahawa tingkah laku ini berbeza-beza merentas sistem, dengan sesetengah pengguna melaporkan tempoh tidur 1ms yang konsisten.
Sebab Kemungkinan
Tempoh tidur yang berlebihan mungkin tidak semestinya menunjukkan kerosakan perkakasan atau perisian . Penjadualan benang Windows menggunakan "kuantum masa", selang masa yang terikat dengan pelaksanaan benang. Untuk tempoh tidur bukan sifar, kelewatan sebenar dibundarkan kepada kuantum lengkap terdekat.
Kuantum Masa Lalai
Secara lalai, Windows 7 mempunyai kuantum masa sebanyak 15.6ms. Ini bermakna Sleep(1) sebenarnya akan menggantung benang selama sekurang-kurangnya 15.6ms, menghasilkan gelagat 15ms sleep setiap lelaran yang diperhatikan.
Penjelasan Alternatif
Dalam sesetengah kes, tempoh tidur 1ms yang diperhatikan mungkin dikaitkan dengan kehadiran program atau proses lain yang telah mengubah suai resolusi pemasa seluruh sistem kepada 1ms. Penggantian ini boleh membawa kepada tempoh tidur yang lebih tepat.
Kesimpulan
Gelagat fungsi Sleep() dalam senario ini biasanya dijangkakan. Mekanisme kuantum masa penjadual benang Windows membulatkan tempoh tidur untuk melengkapkan selang, menghasilkan masa tidur yang lebih lama untuk tempoh yang kecil. Walau bagaimanapun, faktor luaran seperti tetapan peleraian pemasa yang diubah suai juga boleh mempengaruhi tingkah laku tidur.
Atas ialah kandungan terperinci Mengapa Tidur(1) dalam Windows Kadangkala Tidur Lebih Lama Daripada Jangkaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!