是`const`字符串参数(线程)安全吗
|
这段代码
procedure MyThreadTestA(const AStr: string);
比
procedure MyThreadTestB(AStr: string);
在执行相同的工作时,两者都传递一个指针。
但是,版本B“正确地”更新了AStr
的引用计数并在我更改它的情况下进行了复制。
版本A仅传递一个指针,只有编译器阻止我更改AStr
。
如果我在汇编程序中做一些恶作剧或以其他方式规避编译器保护,则版本A不安全,这是众所周知的,但是...
通过引用将AStr
作为const
参数线程安全吗?
如果AStr
在其他线程中的引用计数变为零并且字符串被销毁,会发生什么情况?
没有找到相关结果
已邀请:
2 个回复
疼嘶桐
防止添加引用,因此另一个线程进行的更改将以不可预测的方式影响该值。示例程序,尝试更改
的定义中的
:
但这不仅限于线程。修改基础变量位置具有类似的效果:
夏瓤跋棘