0
我想使用select調用send()數據從我的寫套接字fd。我將要討論非阻塞套接字的實現。 哪個實施更好。選擇()呼叫與無限超時
while(u4BytesSent < u2BufLen)
{
i4RetVal = send(sockFd, au1Buf + u4BytesSent, (u2BufLen - u4BytesSent));
if(i4RestVal == -1 && errno != EWOULDBLOCK)
{
break;
}
i4BytesSent = i4BytesSent + i4RetVal;
}
如果發送緩衝區變得頻繁滿了,這段代碼是否會佔用CPU?
OR
與無限的使用選擇呼叫timeout.Will選擇()與CPU拱和所有有更好的表現?
感謝您的回答..我不能改變套接字的模式,因爲這是一段巨大的代碼,可能會影響其他操作。我只是想知道,無限超時的select()會消耗CPU還是線程會在socket沒有準備好發送的時候進入休眠狀態() –
嗯,你可以暫時將套接字設置爲阻塞這個函數,然後將它設置回來非阻塞後來......他這樣說,是的,'選擇()'應該能正常運行。 – duskwuff