EPr*_*und 2 delphi multithreading delphi-6
在TThread类中有一个名为的类成员(属性)Terminated.
此外,还有一个procedure Terminate;它仅仅设置Terminated到True.
当我们继承时,TThread有一些情况我们检查终止.以下池/循环只是为了演示可能的情况:
while not Terminated do
begin
Work;
end;
Run Code Online (Sandbox Code Playgroud)
什么是终止的保证永远不会被处理器缓存?
Delphi编译器在优化方面并不咄咄逼人.它将类的成员视为全局的.这意味着,基本上不是本地的.编译器知道其他方可以看到变量.与简单的局部变量不同.
对于全局变量,编译器不会注册其对该变量的访问权限.因此,无论何时读取变量,都会从内存中读取值.同样在写入时,该值将写入内存.
剩下的就是内存缓存.存储器系统确保不同处理器高速缓存之间的一致性.
因此,TThread终止的实现没有问题.