end;
setevent(syncproc.signal);
end;
end;
finally
localsynclist.free;
end;
finally
leavecriticalsection(threadlock);
end;
end;
首先,这个方法必须在主线程中被调用(如前面通过消息传递到主线程),否则就抛出异常。
接下来调用resetsyncevent(它与前面setsyncevent对应的,之所以不考虑waitforsyncevent的情况,是因为只有在linux版下才会调用带参数的checksynchronize,windows版下都是调用默认参数0的checksynchronize)。
现在可以看出synclist的用途了:它是用于记录所有未被执行的同步方法的。因为主线程只有一个,而子线程可能有很多个,当多个子线程同时调用同步方法时,主线程可能一时无法处理,所以需要一个列表来记录它们。