
定义一个函数或者过程,这个函数就是线程要执行的内容,然后调用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
对线程的概念你还不是很明白。 一个进程都会至少有一个线程。所以只要你随便写啥程序,如果不是你自己特意加多线程或者引用其它的带多线程的库的话,你的程序就是单线程的。 我看你的意思,其实是想写一个程序,在这个程序里面,还可以创建一个其它的线程。这在DELPHI里是可以通过TThread的继承类来实现的。只要你声明一个类,继承自TThread就可以。比如typeTMyThread = class(TThread) procedure Executeoverride//在这个的实现里面写代码即可。要注意线程间资源的共享end当然你也可以用CreateThread来 *** 作。 在DELPHI本身自带了多线程的DEMO。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)