1
我已經讀了一些lib作爲libev,他們都使用非阻塞的io來處理網絡通信。但是,在這種情況下阻塞io是否用於網絡?在哪種情況下使用阻塞聯網I/O?
我已經讀了一些lib作爲libev,他們都使用非阻塞的io來處理網絡通信。但是,在這種情況下阻塞io是否用於網絡?在哪種情況下使用阻塞聯網I/O?
對於簡單的程序(例如測試實用程序或專用客戶端)或使用專用線程時。
在第一種情況下,與非阻塞I/O有關的額外邏輯沒有意義,而在第二種情況下,邏輯由涉及多個線程的邏輯代替,其中線程基本上使用阻塞I/O一個專用的客戶端(或服務器),這是以線程和同步的額外資源爲代價來完成的,但通常是合理的,尤其是在無論如何需要多個線程或線程在資源方面便宜的情況下。
非阻塞I/O通常用於庫和其他使用專用線程無法證明資源,可測試性或可移植性問題的情況。它往往歸結爲個人的品味。差異往往是一個風格問題。