TThread的后代,从主线程访问属性

Maj*_*agu 3 delphi multithreading

我有一个类是TThread的后代.我有一些只读的公共属性.如果我的主线程在线程处于活动状态时读取这些值,我会遇到问题吗?

Pau*_*Jan 8

如果通过"只读属性"你的意思是TThread后代本身也不会改变它们,并且尽快初始化它们,那么一切都会好的(只要你确定线程是活着的并且在你请求的时候踢财产价值).

如果通过"只读属性"表示TThread后代将是唯一一个更改它们的人,那么您将需要确保主线程在更改时不读取它们(除非它们是原子值,如整数) .

  • 更新"asap"是不够的.基本上只有一种方法可以安全地执行此操作 - 而执行初始化的方法是在主线程的上下文中执行的,即在构造函数中执行.一旦多个线程可以访问字段,它就不再安全. (2认同)