我有一个带有主线程(UI线程)和工作线程的应用程序。
主线程将一个大字符串传递给工作线程,然后工作线程根据传递的字符串执行一些工作。
在执行工作线程期间,可能会更改传递的字符串的内容。
有没有办法复制字符串(例如在工作线程的构造函数中)以避免可能的意外并改为处理该字符串副本?
copy()或UniqueString()可以解决这个问题吗?
答案 0 :(得分:6)
没有必要打电话。最常用的Delphi字符串(字符串,AnsiString和UnicodeString)实现" copy on write"机制。如果线程修改了共享字符串,则会自动在该线程中创建该字符串的新副本,并且将修改此副本。
如果你仍然希望拥有一个不是"拥有的字符串"通过代码的任何其他部分,您可以调用UniqueString。