Multithreading 当另一个线程可以在Delphi中使用对象时,如何在线程中安全地处理该对象?

Multithreading 当另一个线程可以在Delphi中使用对象时,如何在线程中安全地处理该对象?,multithreading,delphi,thread-safety,Multithreading,Delphi,Thread Safety,当另一个线程可以在Delphi中使用对象时,如何在线程中安全地处理该对象? 您有什么想法或文章要读吗?您必须确保其他线程不再使用该对象,然后才能安全地处理它 使用锁(如关键部分或互斥锁)包装对对象的所有访问 或使对象被引用计数。让每个线程在处理对象时增加refcount,完成后减少refcount。然后,可以在对象的refcount减为0后处理该对象。编写一个实现Delphi的派生类可以很好地实现这一目的,并自动为您完成大部分工作。我链接的文档中有一些示例。@qgi阅读有关OmniThreadL

当另一个线程可以在Delphi中使用对象时,如何在线程中安全地处理该对象?
您有什么想法或文章要读吗?

您必须确保其他线程不再使用该对象,然后才能安全地处理它

使用锁(如关键部分或互斥锁)包装对对象的所有访问


或使对象被引用计数。让每个线程在处理对象时增加refcount,完成后减少refcount。然后,可以在对象的refcount减为0后处理该对象。编写一个实现Delphi的派生类可以很好地实现这一目的,并自动为您完成大部分工作。

我链接的文档中有一些示例。@qgi阅读有关OmniThreadLibrary的任何示例-它们的集合和几乎所有其他基元正是ARC对象的目标多线程使用。或者阅读任何关于通过COM接口使用Word/Excel的文章-这些接口也映射到Delphi ARC对象,尽管这些文章不会公开多线程程序设计。永远不要在对象仍然可以访问时释放对象。从未。