C 非同步I O模型

2021-05-27 05:11:31 字數 2533 閱讀 8383

using

system;

using

system.collections.generic;

using

system.io;

using

system.net;

using

system.net.sockets;

using

system.threading;

using

linfx.net;

using

linfx.win32;

namespace

linfx.net.server

public

ciocpserver(intptr handle)

: this

()

public

void

run()

//////

///private

void

listenthreadmethod(

object

obj)

}#region

callback

//////

請求 callback

//////

private

void

listenendaccept(iasyncresult asyncresult)

//投遞乙個接收請求

postrecv(socket);

}//////

接收 callback

//////

private

void

clientendrecv(iasyncresult asyncresult)

return

; }

//再投遞乙個接收請求

postrecv(state.socket);

//將收到的資料傳送回去

postsend(state.buffer, state.offset, state.size, state.socket);

}//////

傳送 callback

//////

private

void

clientendsend(iasyncresult asyncresult)

remain bytes: sent bytes:

", buffer.length, remainbytes, sentbytes));

postsend(buffer, buffer.length

-remainbytes, remainbytes, state.socket);

} #endregion

#region

投遞重疊 i/o

//////

投遞接受 i/o

///private

void

postaccept()

//////

接收 i/o

//////

private

void

postrecv(socket socket)

//////

傳送 i/o

//////

//////

///private

void

postsend(

byte

buffer,

intoffset,

intsize, socket socket)

#endregion

internal

class

asyncstate

public

asyncstate(

byte

buffer,

intoffset,

intsize, socket socket)

}public

void

sendmessage(message msg)

#region

event

//private static readonly object eventrun = new object();

public

event

eventhandler start;

//

//remove

//}protected

virtual

void

onrun(eventargs e)

}

#endregion

public

void

dispose()

//////

處理封包

//////

void

dispatchmsg(message msg)

break

;

default

:

break

; }}}

}

非同步通知IO模型

同步非同步的關鍵是函式的呼叫時刻和返回時刻與資料傳輸的開始時刻和完成時刻,資料傳輸指輸出或輸入到緩衝。非同步通知io模型 通知io指發生了io相關操作,通知輸入緩衝有資料需要讀取,輸出緩衝無資料可以寫入。select方式是典型的通知io模型,select方式一般是同步通知,select返回時說明有i...

偽非同步IO模型

你可能了解過一種通過執行緒池優化的解決方案,採用執行緒池和任務佇列的方式。這種被稱作偽非同步io模型。當有客戶端接入時,將客戶端的請求封裝成乙個 task 投遞到後端線程池中來處理。執行緒池維護乙個訊息佇列和多個活躍執行緒,對訊息佇列中的任務進行處理。這種解決方案,避免了為每個請求建立乙個執行緒導致...

非同步通知I O模型和重疊I O模型

理解非同步通知i o模型 理解同步和非同步 同步i o的缺點及非同步方式的解決方案 理解非同步通知i o模型 實現非同步通知i o模型 wsaeventselect函式和通知 include intwsaeventselect socket s,wsaevent heventobject,long ...