【发布时间】:2016-05-12 03:13:17
【问题描述】:
如何在一个线程中安全地释放一个对象,而另一个线程可以在 Delphi 中使用该对象? 有什么想法或文章可以阅读吗?
【问题讨论】:
-
永远不要释放仍然可以访问的对象。从不。
标签: multithreading delphi thread-safety
如何在一个线程中安全地释放一个对象,而另一个线程可以在 Delphi 中使用该对象? 有什么想法或文章可以阅读吗?
【问题讨论】:
标签: multithreading delphi thread-safety
您必须确保其他线程不再使用该对象,然后才能安全地处理它。
用锁来包装对对象的所有访问,例如临界区或互斥锁。
或者使对象被引用计数。让每个线程在处理对象时增加引用计数,并在完成时减少它。然后,您可以在对象的引用计数减为 0 后处理该对象。编写实现 Delphi interface 的 TInterfacedObject 派生类将非常适合此目的,并自动为您完成大部分工作。
【讨论】: