本人寫了一個基于select框架的socket通信的代碼
現在對于select使用FD_ISSET有點疑惑
我在回圈中使用兩次FD_ISSET,是否會造成兩次FD_ISSET檢測的結果不一樣?
while(1)
{
for(int i =0; i < max_num; i++)
{
if(FD_ISSET(client_fds[i], &server_fd_set))
{
//不處理
}
}
for(int i =0; i < max_num; i++)
{
if(FD_ISSET(client_fds[i], &server_fd_set))
{
//處理
}
}
}
uj5u.com熱心網友回復:
理論上來說,會。因為兩個處理有時間差。某一時刻判斷結果是不可讀寫,不代表下一時刻不能讀寫,反過來也一樣,某時刻判斷結果是可讀寫,不代表下一時刻也能讀寫。uj5u.com熱心網友回復:
FD_ISSET并沒有改變fd和fdset,結果應是一樣的轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131807.html
標籤:C語言
上一篇:c語言動態定義陣列空間報錯?
下一篇:C語言
