大家对vb多线程有很多疑问,有兴趣的朋友来讨论一下单元线程和线程池!

bu_wen 2003-06-14 04:25:27
vb的Activex Dll 并不能自己创建线程..(挂接vb客户端的线程)
但可以通过单元线程来实现多线程DLL.
其实就是这样一种情形.
每个客户端线程创建的dll对象在一个单独的单元中.
单元线程DLL
客户1(线程1)------> 单元1 [对象1] [对象2] [对象3]
客户2(线程2)------> 单元2 [对象4] [对象5]
他们可以互不影响..
但这只是对多个客户端时才有用啊.
这样的多线程意义大吗??

...全文
125 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
matboy 2003-06-15
  • 打赏
  • 举报
回复
还是楼上说的比较有条理,顶
pigsanddogs 2003-06-15
  • 打赏
  • 举报
回复
如果要用vb实现多线程, 是不是要写activex dll呢? 我com知识很贫乏,
上次听别人这样说的,vb中的线程是单元线程,而不是自由线程, 要能够msgbox等必须在
自由线程中,必须是com? 这些概念没一个懂的。 我看到好多thread.dll的别人写的, 都
是要注册,想自己写,可是虽然是调用成功了, 还是会报错! 不加msgbox等就不会, 跟
直接在vb中createthread一样的! 听高手解答~
这个问题很急,由于要做个系统,时实要求好高,然后读写数据库的时候(可能会有10m的文件)
就会没有响应了,大循环中,想用线程代替,不过痛苦!
另外recordset中的update方法有什么办法让它能立刻返回?? 调用后他自己会去处理,
我程序可以继续执行?
waterytimes 2003-06-15
  • 打赏
  • 举报
回复
允许小菜说两句:

VB的线程安全很差,一般情况下调试阶段不会产生错误,但应用时很容易出现意想不到的现象.
如果做多线程,VC首选.
自由之眼 2003-06-15
  • 打赏
  • 举报
回复
由于VB不能实现真正意义上的DLL,所以在COM写组件的时候也有一定的局限性.
我最近在用VB写COM组件和(Transaction),对VB对COM组件的支持觉得还是够用的.
由于DLL是不能自主运行的,必须有一个宿主.每个宿主都是在使用DLL的一个实例.所以我想多线程实际上是它的本质.
COM技术实际上就是为多用户设计的,它的主要贡献是商业逻辑(Business Active),而非他的多线程.根据MTS事务处理实现了商业运行的逻辑层.但是最近微软发布的.NET提出了WEBService来替代COM.但是由于他的事务处理还是不完整的.所以可能还是需要一段时间.

pigsanddogs 2003-06-15
  • 打赏
  • 举报
回复
听高手讲课
ydzqw 2003-06-15
  • 打赏
  • 举报
回复
我想楼主是想讨论COM,以及VB中怎么利用COM来实现多线程


自由之眼 2003-06-15
  • 打赏
  • 举报
回复
楼主是否要讨论的是COM技术呢?
bu_wen 2003-06-15
  • 打赏
  • 举报
回复
好啊.谢谢大家的热心参与.
不过我想讨论的可能不是什么是多线程的问题.
我主要想了解一下关于vb单元线程的一些优缺点,或是具体的应用.
我对com也不是很熟悉.
但vb中既然存在这样的概念,那么应该有他的应用的地方,在什么情况下我们可以充分利用这些技术呢?
自由之眼 2003-06-14
  • 打赏
  • 举报
回复
多线程主要是在win9x以后广泛应用的。
设想一下,如果一个程序是Single Threaded ,呵呵,那么微软的操作系统早就崩溃了。
我想,多线程主要是解决资源浪费的问题。系统并不一定要等待一个线程运行结束草可以进行下一次操作。
所谓CPU的时间片就是为多线程准备的,每一个线程都有自己的优先级,并且根据优先级得到系统分配的时间片。CPU根据时间片给各个线程分配处理时间。
这样,就可以解决多个线程同时运行的实例。同时防止一个线程过长的时间占据CPU资源,但是光是这些还是不够的。对线程的资源管理也是很重要的。所以就引入了缓冲池。这样可以尽量压缩不必要的资源消耗。
VB对多线程的支持不好,但是在VB.NET中却得到了很好的支持。在VB6的单元线程我认为还是很不完善的,对于COM而言的DLL不支持内存数据库和缓冲对象。可能VB设计者的本意就是不要过于复杂。
如果要写真正的多线程程序,一般都是使用VC。而VB只是上层界面的设计。这就是很多大公司的做法。使用VC写底层,VB写界面。
doudoushen 2003-06-14
  • 打赏
  • 举报
回复
不懂 想学
ydzqw 2003-06-14
  • 打赏
  • 举报
回复

别沉下去了
ydzqw 2003-06-14
  • 打赏
  • 举报
回复

这么好的贴子竟然没什么人。
pigsanddogs 2003-06-14
  • 打赏
  • 举报
回复
up && mark && gz!!
ydzqw 2003-06-14
  • 打赏
  • 举报
回复
up
好东东

单元线程类似于界面线程,还有自由线程,自由线程类似于辅助线程,这些是com术语
bu_wen 2003-06-14
  • 打赏
  • 举报
回复
activex dll 有单线程和单元线程 方式..编译的时候 可以 选择 Apartment Threaded(方式就是上面的)
或 Single Threaded

activex exe 进程外组件,有两种方式.一个是 Thread per Object (每个对象对应一个线程)
还有就是 Thread Pool (线程池) -----可以指定一定数量的线程.在这个缓冲池内
每个对象都在缓冲池的下一个线程上创建,到达了缓冲池的最后一个线程之后它又从第一个线程开始..
jordi2014 2003-06-14
  • 打赏
  • 举报
回复
什么叫单元线程和线程池?

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧