Seperti yang saya lihat, menunggu timeout berarti "memiliki" timeout. Dengan cara ini saya berharap bahwa poll() benar-benar memeriksa deskriptor file, dan kemudian menunggu jika tidak ada yang siap untuk batas waktu 0 milidetik (tidak menunggu sama sekali). Tapi masalahnya adalah itu hanya akan memberi sinyal jika fd tersedia.
Saya juga memeriksa kode sumber linux dan setahu saya, begini cara kerjanya:pertama hitung titik tunggu "masa depan", lalu periksa deskriptor file, lalu jika tidak ada yang tersedia, tunggu waktu tunggu yang ditentukan.
Salam,
Ini akan segera kembali:
Jika batas waktu lebih besar dari nol, ini menentukan interval maksimum (dalam milidetik) untuk menunggu deskriptor file siap. Jika batas waktu adalah nol, maka
poll()
akan kembali tanpa memblokir. Jika nilai timeout adalah-1
,poll
blokir tanpa batas waktu.
, sejak Mac OS X 10.5
;
Interval maksimum untuk menunggu polling selesai, dalam milidetik. Jika nilai ini adalah 0,
poll()
akan segera kembali. Jika nilai ini adalahINFTIM (-1)
,poll()
akan memblokir tanpa batas hingga kondisi ditemukan.
, sejak OpenBSD 3.8