我正在研究一個低延遲金融應用程序,它通過套接字接收tcp數據。
這就是我正在做的套接字連接接收字節:防止線程從調用Socket.Receive時睡覺
public class IncomingData
{
Socket _Socket;
byte[] buffer = new byte[4096];
public static void Connect(IPEndPoint endPoint)
{
_Socket = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
_Socket.Connect(endPoint);
}
public static void ReadSocket(int ReadQty)
{
_Socket.Receive(buffer, 0, ReadQty, SocketFlags.None);
}
}
我聽說,當你調用Receive()
上一個流套接字,調用線程處於睡眠狀態時,它被喚醒時,數據被接收。我希望線程能夠全速運行(使用CPU容量)。
有沒有一種方法可以使用Stream套接字來完成此操作?如果唯一的方法是使用原始套接字,您能提供一個例子嗎?
當數據不存在時,將線程置於睡眠模式實際上是資源管理方面的一件好事。我完全沒有充分利用CPU的容量。如果數據尚未存在,您希望CPU運行的是什麼?只是一個空循環不斷輪詢數據? – 2012-01-15 20:00:04
是的,我想做一個while循環繼續輪詢數據。基本上這樣一個線程不需要任何時間來喚醒。 – FuzzyLogic 2012-01-15 20:15:24
這就完成了*完全相反的*,線程會燒掉它的量子,而不是預定一段時間。它顯着增加了延遲。 – 2012-01-15 20:39:54