Delphi中的线程类--之(4)[6]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 raptor 的 blog

  psynchronizerecord = ^tsynchronizerecord;

  tsynchronizerecord = record

    fthread: tobject;

    fmethod: tthreadmethod;

    fsynchronizeexception: tobject;

  end;

用于进行线程和主线程之间进行数据交换,包括传入线程类对象,同步方法及发生的异常。

synchronize中调用了它的一个重载版本,而且这个重载版本比较特别,它是一个“类方法”。所谓类方法,是一种特殊的类成员方法,它的调用并不需要创建类实例,而是像构造函数那样,通过类名调用。之所以会用类方法来实现它,是因为为了可以在线程对象没有创建时也能调用它。不过实际中是用它的另一个重载版本(也是类方法)和另一个类方法staticsynchronize。下面是这个synchronize的代码:

class procedure tthread.synchronize(asyncrec: psynchronizerecord);

var

  syncproc: tsyncproc;

begin

  if getcurrentthreadid = mainthreadid then

    asyncrec.fmethod

  else

  begin

    syncproc.signal := createevent(nil, true, false, nil);

本文关键:Thread Event CriticalSection Synchronize
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top