游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3595|回复: 5

打造最专业的VB6服务器应用开发——真正的多线程!

[复制链接]

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2009-8-9 14:57:00 | 显示全部楼层 |阅读模式
打造最专业的VB6服务器应用开发系列的上一讲中讲了如何使用VB6建立控制台的程序:
从控制台开始

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


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

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

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


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

Sub Main()

    '重要,在main函数中调用
    If g_ThreadInit.MainThreadInit = False Then
   
        g_Console.WriteBuff "多线程模块初始化失败!无法进行多线程" & vbCrLf
   
    End If
   
End Sub

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

Public Function ThreadServerFunc(ByVal nParam As Long) As Long

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

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


大家欢呼吧!![em3][em3][em3]



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


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

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
 楼主| 发表于 2009-8-9 14:58:00 | 显示全部楼层

Re:打造最专业的VB6服务器应用开发——真正的多线程!

示例在winxp sp3,vista x64,win7 x64下和各种msvbvm60.dll环境下均测试通过。

1

主题

103

帖子

119

积分

注册会员

Rank: 2

积分
119
发表于 2009-8-9 20:13:00 | 显示全部楼层

Re:打造最专业的VB6服务器应用开发——真正的多线程!

这种垃圾代码对我来说没有任何用途,楼主会做游戏吗?我的游戏不需要用多线程,单线程上就可以超过你们用多线程做的游戏。

等你做除了个能和五星勋章2比的游戏再出来显吧。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2009-8-9 20:49:00 | 显示全部楼层

Re: Re:打造最专业的VB6服务器应用开发——真正的多线程!

游戏之家战长: Re:打造最专业的VB6服务器应用开发——真正的多线程!

这种垃圾代码对我来说没有任何用途,楼主会做游戏吗?我的游戏不需要用多线程,单线程上就可以超过你们用多线程做的游戏。

等你做除了个能和五星勋章2比的游戏再出来显吧。


xpertsoft???

1

主题

193

帖子

193

积分

注册会员

Rank: 2

积分
193
QQ
发表于 2009-8-9 21:57:00 | 显示全部楼层

Re:打造最专业的VB6服务器应用开发——真正的多线程!

3楼的是哪家的马甲?
正儿八经的帖子里也乱放狗咬人。

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2009-8-9 23:14:00 | 显示全部楼层

Re: Re:打造最专业的VB6服务器应用开发——真正的多线程!

jasv: Re:打造最专业的VB6服务器应用开发——真正的多线程!

3楼的是哪家的马甲?
正儿八经的帖子里也乱放狗咬人。


怀疑是miu的师傅!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 18:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表