Delphi 完成埠使用

2021-07-27 03:31:15 字數 1137 閱讀 1024

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...