Delphi怎样实现多线程

Delphi怎样实现多线程,第1张

线程其实非常简单,DELPHI有多线程的类,你添加即可使用,但是我喜欢自己调用API,方法如下:

定义一个函数或者过程,这个函数就是线程要执行的内容,然后调用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。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11886360.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存