定義壹個函數或者過程,這個函數就是線程要執行的內容,然後調用API就可以不斷創建線程,每個線程都單獨的執行那個函數,執行完畢線程就自動關閉,下面是我程序裏面的部分代碼:
{下面這個就是線程過程,我的線程傳遞壹個參數,建立的SOCKET}
procedure ClientThread(var sock:TSOCKET); stdcall;
var ……;
begin
……
end;
{下面是主程序建立服務,等待連接,連接後調用線程進行處理的代碼}
repeat
iAddrSize := sizeof(client);
sClient := accept(sListen, @client, @iAddrSize);
if sClient=INVALID_SOCKET then
begin
SocketErrorMsg(sClient, 'accept() fail');
break;
end;
writeln('Accepted client: ',inet_ntoa(client.sin_addr),':',ntohs(client.sin_port),' sock=',sClient);
hThread := CreateThread(nil, $1000, @ClientThread, @sClient, 0, dwThreadId);
if hThread=0 then
begin
writeln('CreateThread() fail:',GetLastError);
break;
end;
CloseHandle(hThread);
until false;