请问下:TThread类对象的synchronize方法和TCriticalSection类对象的ENTER和Leave方法配合有什么不同还有他们都是在什么情况下使用比较好。谢谢

解决方案 »

  1.   

    1、Synchronize函数是用于VCL的线程安全的,你在线程中调用主线程中的资源,需要采用同步访问的方法(Synchronize),否则极易出现错误。2.SyncObjs单元中的类是同步和互斥对象,在多线程中用到的,基本上说就是AObject.Enter{当一个线程调用时,将会锁定本对象,直到调用Leave,如果已经有其它线程Enter,那本调用将阻塞进程,直到Leave}
    AObject.Leave{Leave啦,我走了,你才能进来,不然门口等着,呵呵。}注意:如果线程中需要调用VCL,则需通过线程的Synchronize方法,间接调用主线程
    来执行你的代码,
    如果要访问全局共享资源,在同一个进程中,用TCriticalSection可以获得较高的效率.
      

  2.   

    http://mental.mentsu.com/tech/delphi/d_tthread.htm