AnsiString引用计数机制之线程安全
Thread safety of AnsiString reference counting mechanism
我的问题是关于 Borland C++Builder 6.0 中的 AnsiString
如您所知,VCL 的 AnsiString 使用引用计数。
那个引用计数线程安全吗?
例如,假设我们有 std::queue<AnsiString> asq;
我们在线程#1 的队列中推送一个 AnsiString 值,然后我们在线程#2 中执行 asq.pop()
。 (对 asq
本身的访问是同步的。)不修改字符串。
当以这种方式使用 AnsiString 时调用 AnsiString 的析构函数时,我是否会发生内存泄漏?
是的,引用计数是线程安全的。每当引用计数递增和递减时,RTL 都会锁定引用计数。你描述的场景不会有内存泄漏。
我的问题是关于 Borland C++Builder 6.0 中的 AnsiString
如您所知,VCL 的 AnsiString 使用引用计数。
那个引用计数线程安全吗?
例如,假设我们有 std::queue<AnsiString> asq;
我们在线程#1 的队列中推送一个 AnsiString 值,然后我们在线程#2 中执行 asq.pop()
。 (对 asq
本身的访问是同步的。)不修改字符串。
当以这种方式使用 AnsiString 时调用 AnsiString 的析构函数时,我是否会发生内存泄漏?
是的,引用计数是线程安全的。每当引用计数递增和递减时,RTL 都会锁定引用计数。你描述的场景不会有内存泄漏。