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

qgi*_*qgi 0 delphi multithreading thread-safety

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

Rem*_*eau 7

在安全地处理它之前,您必须确保其他线程不再使用该对象.

使用锁(例如临界区或互斥锁)包裹对对象的所有访问权限.

或者使对象被引用计数.在处理对象时让每个线程递增引用计数,并在完成时递减它.然后你可以在它的refcount减少到0之后处理该对象.编写一个TInterfacedObject实现Delphi 的派生类可以interface很好地用于此目的并自动完成大部分工作.