2017-04-21 19 views
0

我有我的網絡連接管理aysnc線程池模型。一個調度程序線程保持調用poll()和一個poll()表示如此的 可讀/寫的工作線程池。閱讀()後輪詢返回POLLIN和POLLERR

請考慮poll()表示套接字已準備就緒的情況。但工作線程尚未處理讀取。我禁用讀取輪詢,而工作線程尚未處理讀取。現在遠程端斷開連接並輪詢() 以POLLERR/POLLHUP返回。當工作線程在此之後執行read()調用時會發生什麼?

即使有一些尚未讀取的數據,read()是否返回<?或

即使套接字有POLLERR/POLLHUP,read()是否從網絡讀取數據?

回答

0

所有未決數據將在read()返回零之前交付。但是,如果read()返回-1,未決數據可能已丟失。

+0

即使POLLIN後有POLLERR,它是否傳送數據? – siri

+0

我只能重複我上面所說的,我不打算這樣做。 – EJP