求Synchronize在indy中的用法 (100分)

  • 主题发起人 主题发起人 一条大鱼
  • 开始时间 开始时间

一条大鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
Synchronize是一个无参数的过程,这真让人头痛,在indy中线程自动产生,就在主单元内,
如果我把参数放在private里时,多个线程就会同时调用这个参数从而照成错误的结果.
请问在indy中如何解决这个问题?
 
不对吧?线程private是私有数据,多线程之间是不可访问的。不应该出现错误结果。
public才是多线程间共享的。
 
indy的线程是封装在一个事件里面的,也就是说事件里的参数是独立的,
但是事件外面的参数不管是private还是public都是这个单元里共享的
还有,为什么indy的demo里面线程访问VCL都不用Synchronize?
 
估计Indy把你使用的方法塞在线程的Synchronize过的方法里,所以不用Synchronize
 
我估计不会,因为ATread里有Synchronize这个方法
而且塞在里面了那还用多线程有什么意思啊?
 
那就是这么做,否则逻辑上说不过去的,
我在自己写的一些类里也是这么做的,
 
问题是你能不能确定啊?
不要害我啊,如果决定了,以后做完了才发现不是这样的,那我就会很惨的啊
翻工可不是一件好玩的事啊!
 
你可以测试,也可以看INDY的代码呀
 
传简单的几个字串,开了一千条线程,服务器的memo倒是一个数据没有丢,客户端倒是多出了不少的数据
叫我看源码,我又得学很多的东西,没有时间了啊,一时我是看不懂的
可我要写的东西在服务器端都是复杂的操作,经常要访问VCL的,不知道会不会出问题
 
indy搞1000个线程要出问题的,用双CPU的机器,好象组塞最多也只能到1008个(MS说的)
要处理多连接问题最好用异步,用完成端口或者重叠I/O
 
没有了,我现在搞的这个考试系统最多也就是69个用户,一般都不会超过50个
但因为服务器端要监控,所以会比较复杂点,但用户不多,不要紧的
 
如果要求稳定行好,我就帮你定做一个简单的类把,呵呵,我手头上代码太多,组合起来很快
 
这么好啊!那先谢谢你了,到时我再开贴给你加分,
 
你的QQ是?
 
我手头上有重叠I/O的,回调函数的,完成端口的,
 
191361746
你说的这些东西我都不知道啊!
这回惨了,我现在只求做完向上面交差就行了啊,可能没有时间了啊!
 
啊,那你最好用TServerSocket的组塞模式做,很简单
 
多人接受答案了。
 
无忌兄:能不能也给我发一个啊,我也是在做indyTcpServer,多个客户传输文件,同时要在主界面上显示处理状态信息,担心多线程会出问题,请指点一二。谢谢。
 
后退
顶部