问个线程处理VCL同步的问题。 ( 积分: 50 )

M

mill666

Unregistered / Unconfirmed
GUEST, unregistred user!
看了delphi的关于多线程的编程,知道如果子线程A要处理VCL,需要通过Synchronize实现跟主线程的同步;这一点俺清楚;
可是如果说我的程序里面不只有一个子线程类,假设有两个子线程类TthreadA和TthreadB,由这两个类分别创建对象threadA和threadB,threadA通过Synchronize处理VCL控件1,threadB通过Synchronize处理VCL控件2,这时候这两个线程跟主线程都实现同步了,
我的问题是:threadA和threadB都处理VCL控件【虽然是不同的控件】,除了跟主线程同步外,threadA和threadB之间是否也需要实现同步??
其实问题就是问:处理VCL的时候,是否只需要跟主线程同步,而子线程之间不需要同步??
 
threadA和threadB之间如果没有资源占用,那么是不需要同步的
 
不需要同步
 
Synchronize同步的目的是让同时只有一个线程去访问VCL,threadA和threadB是不需要同步的。
 
Synchronize
 
同步只是发生在资源共享的情况下吧,
如果没有VCL共享的问题,连主线程都不用同步,直接在副线程操作某个VCL
 
Synchronize同步的目的是让同时只有一个线程去访问VCL,threadA和threadB是不需要同步的。
这句是真的吧??(能否保证某个vcl中的属性等都是唯一操作)不管是否,先感谢了,我去试下.
 
”threadA通过Synchronize处理VCL控件1,threadB通过Synchronize处理VCL控件2“
如果2个线程不同时访问一个VCL,其实不需要Synchronize也可以。
Synchronize(aaa())等于把aaa这个过程交给主线程做,那就没必要用线程了。
 
使用观察者模式,可以完全解决了delphi中的多线程访问vcl的问题哦。当然只是显示信息,嘿嘿。
 
顶部