delphi 完成埠相關函式。
變數
fcompletionport : thandle; //完成埠的相關資訊
const
gowork = $ffffeeee;///開始工作
workbeat = $ffffeedd;///執行緒心跳
gosend = $ffffeecc;///傳送資料
poolpause = $ffffcccc;///暫停
shutdown_flag = $ffffffff;///執行緒關閉
heartbeat_flag = $ffffffee;///處理執行緒池的心跳維持
1、createiocompletionport 建立完成埠
fcompletionport := createiocompletionport(invalid_handle_value, 0, 0, 0);
引數:
__in handle filehandle,
__in_opt handle existingcompletionport,
__in ulong_ptr completionkey,
__in dword numberofconcurrentthreads
返回值:
返回乙個iocp的控制代碼。若為null則建立失敗,不為null則建立成功。
2、postqueuedcompletionstatus 投遞工作狀態
nret := postqueuedcompletionstatus(fcompletionport, 0, 0,pointer(workbeat));
3、 getqueuedcompletionstatus 獲取完成埠上的當前工作狀態, 比如此時埠上完成的是什麼操作,資料是什麼等 ;有可能獲取不成功根據返回值確定。
4、closehandle 關閉完成埠
closehandle( fcompletionport);
完成埠,使用其的主要目的是提高io的吞吐量;
其實可以把完成埠看成系統維護的乙個佇列,作業系統把重疊io操作完成的事件通知放到該佇列裡,由於是暴露 「操作完成」的事件通知,所以命名為「完成埠」(completion ports)。乙個socket被建立後,可以在任何時刻和乙個完成埠聯絡起來。
DELPHI中完成埠 IOCP 的簡單分析(1)
用delphi開發網路 已經有一段時間了!我發現在網上用vc來實現完成埠 iocp 的 很多,但是使用delphi來實現的就比較少了。對iocp講的清楚的就更少了。在這裡我把自己編寫delphi下的iocp寫出來,希望對剛學完成埠的朋友有個幫助。首先我們來了解一些在使用iocp的時候需要使用的一些結...
DELPHI中完成埠 IOCP 的簡單分析(1)
用delphi開發網路 已經有一段時間了!我發現在網上用vc來實現完成埠 iocp 的 很多,但是使用delphi來實現的就比較少了。對iocp講的清楚的就更少了。在這裡我把自己編寫delphi下的iocp寫出來,希望對剛學完成埠的朋友有個幫助。首先我們來了解一些在使用iocp的時候需要使用的一些結...
DELPHI中完成埠 IOCP 的簡單分析(4)
在我以前寫的文章中,一直說的是如何接收資料。但是對於如何傳送資料卻一點也沒有提到。因為從 量上來說接收的 要比傳送多很多。今天我就來寫一下如何使用iocp傳送資料。function tnetcontrol.sendspecifydata const socket tsocket data array...