复制工作线程

时间:2018-04-24 15:22:51

标签: multithreading delphi

我有一个带有主线程(UI线程)和工作线程的应用程序。

主线程将一个大字符串传递给工作线程,然后工作线程根据传递的字符串执行一些工作。

在执行工作线程期间,可能会更改传递的字符串的内容。

有没有办法复制字符串(例如在工作线程的构造函数中)以避免可能的意外并改为处理该字符串副本?

copy()或UniqueString()可以解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

没有必要打电话。最常用的Delphi字符串(字符串,AnsiString和UnicodeString)实现" copy on write"机制。如果线程修改了共享字符串,则会自动在该线程中创建该字符串的新副本,并且将修改此副本。

如果你仍然希望拥有一个不是"拥有的字符串"通过代码的任何其他部分,您可以调用UniqueString。