网贴:打造最专业的VB6服务器应用开发-VB6真正的多线程

网贴:打造最专业的VB6服务器应用开发-VB6真正的多线程,第1张

概述 打造最专业的VB6服务器应用开发系列的上一讲中讲了如何使用VB6建立控制台的程序: 从控制台开始 这一讲是重点,VB6真正的多线程 网上有很多介绍VB6多线程的文章,但无外乎以下几种: 1.使用ActiveX EXE实现的多线程,它可以认为是VB6下最安全的多线程实现了。但是因为是在另外一个进程中实现的,严格意义上来说算不得真正的多线程,在实际使用中各个线程间的交互很差,不能满足真正的服务器开发 打造最专业的VB6服务器应用开发系列的上一讲中讲了如何使用VB6建立控制台的程序:
从控制台开始

这一讲是重点,VB6真正的多线程


网上有很多介绍VB6多线程的文章,但无外乎以下几种:

1.使用ActiveXEXE实现的多线程,它可以认为是VB6下最安全的多线程实现了。但是因为是在另外一个进程中实现的,严格意义上来说算不得真正的多线程,在实际使用中各个线程间的交互很差,不能满足真正的服务器开发的需要。

2.简单的使用CreateThread创建线程,没有做任何特殊处理。这种代码很多,但无一例外的是:根本无法编译成正常的EXE执行,偶尔有几个可以编译成P-code执行,而且执行得还很勉强,稍微在线程代码中多加几条VB语句,EXE还是很无情的崩溃了。纯粹的做为演示而用,无实际使用价值。


现在,这一切将成为历史了!
我提供了一个CThreadIniter类,将可以安全的使用多线程。只需要在主线程中调用它的MainThreadInit方法:

SubMain()

'重要,在main函数中调用
Ifg_ThreadInit.MainThreadInit=FalseThen

g_Console.WriteBuff"多线程模块初始化失败!无法进行多线程"&vbCrLf

EndIf

EndSub

然后在线程函数的最开始处调用它的InitThread方法:

PublicFunctionThreadServerFunc(ByValnParamAsLong)AsLong

'重要!一定要在独立线程函数最开始时调用
Callg_ThreadInit.InitThread

EndFunction

即可进行安全的多线程开发!


大家欢呼吧!!

最后:因为脑残的msvbvm60.dll的某些方法实现还会检查线程ID,如果线程ID与主线程不同会跳过,所以还不算很完美,但这些都是可以解决的!大家请期待“打造最专业的VB6服务器应用开发”系列的后续内容!后面我将给大家介绍开发一个完整的使用IOCP的高性能服务器!

附上一个示例,因为主要是为展示多线程开发,其中网络部分只为简单演示,所以网络功能尚未完全完成,只写到了监听socket。但因为能够在多线程下开发,写完它是很容易的事情,有兴趣的可以把它补完。

总结

以上是内存溢出为你收集整理的网贴:打造最专业的VB6服务器应用开发-VB6真正的多线程全部内容,希望文章能够帮你解决网贴:打造最专业的VB6服务器应用开发-VB6真正的多线程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1292201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存