zoukankan      html  css  js  c++  java
  • Synchronize()是如何工作的

        你或许已把Synchronize()当成一个黑匣子,不清楚它是如何工作的。如果愿意揭开这个谜,请看下面。

        当你在程序中第一次创建一个附属线程时,VCL将会从主线程环境中创建和维护一个隐含的线程窗口。此窗口唯一的目的是把通过Synchronize()调用的方法排队。

    Synchronize()把由Method参数传递过来的方法保存在TThread的FMethod字段中,然后,给线程窗口发一个CM_EXECPROC消息,并且把消息的lParam参数设为self(这里指线程对象)。当线程窗口的窗口过程收到这个消息后,它就调用FMethod字段所指定的方法。由于线程窗口是在主线程内创建的,线程窗口的窗口过程也将被主线程执行。因此,FMethod字段所指定的方法就在主线程内执行。

  • 相关阅读:
    BZOJ3631 [JLOI2014] 松鼠的新家
    HDU
    HDU
    HDU
    二分图求最大独立集模板
    HDU
    HDU
    HDU
    Codeforces 1197F Coloring Game 矩阵快速幂 (看题解)
    HDU
  • 原文地址:https://www.cnblogs.com/spider518/p/1904834.html
Copyright © 2011-2022 走看看