multithreading - 复制工作线程的字符串

标签 multithreading delphi

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

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

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

是否有任何方法可以复制字符串(例如在工作线程的构造函数中)以避免可能出现的意外并转而处理该字符串副本?

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

最佳答案

无需调用任何内容。最常用的 Delphi 字符串(字符串、AnsiString 和 UnicodeString)实现“写入时复制”机制。如果线程修改共享字符串,则该线程将自动创建该字符串的新副本,并且该副本将被修改。

如果您仍然想要一个不被代码任何其他部分“拥有”的字符串,您可以调用 UniqueString(s)。

关于multithreading - 复制工作线程的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50005376/

相关文章:

windows - Windows 中的定时器

java - 多个线程在mysql数据库中插入相同内容时出现重复行

multithreading - 为多线程编程设计一个赋值

multithreading - 合并xargs parallel和mpirun

java - 并发迭代和线程安全

arrays - 当它们看起来相同时,为什么编译器会说实现 "differs from the previous declaration"?

Windows GDI 中的 Delphi TextRect

c# - 如何在 C# 和 Delphi 应用程序之间进行通信?

Delphi 添加项目到 ComboBox 速度

multithreading - winsock 2. 同时发送的线程安全。 TCP