我有一个带有主线程(UI 线程)和工作线程的应用程序。
主线程将一个大字符串传递给工作线程,然后工作线程根据传递的字符串执行一些工作。
在工作线程执行期间,传递的字符串的内容可能会更改。
是否有任何方法可以复制字符串(例如在工作线程的构造函数中)以避免可能出现的意外并转而处理该字符串副本?
copy() 或 UniqueString() 可以解决问题吗?
最佳答案
无需调用任何内容。最常用的 Delphi 字符串(字符串、AnsiString 和 UnicodeString)实现“写入时复制”机制。如果线程修改共享字符串,则该线程将自动创建该字符串的新副本,并且该副本将被修改。
如果您仍然想要一个不被代码任何其他部分“拥有”的字符串,您可以调用 UniqueString(s)。
关于multithreading - 复制工作线程的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005376/