1
12
在注释中,您清楚地表明您的问题是未保护的内存操作可能会被破坏。撕裂意味着读线程在部分写入变量时读取变量。 一般来说,这是一个有效的问题,但是在这种情况下,撕裂是不可能发生的。原因是对齐的内存访问保证不会中断。当内存操作对齐时,与此操作一样,读卡器无法读取部分写入的变量。这通常由硬件总线在一条缓存线内串行化所有内存访问来保证。 所以,不,这不是一个错误,代码是正确的。 代码本身用于惰性地创建一个单例。以线程安全方式执行此操作的常见技术是双重检查锁定。此代码使用了另一种避免锁定的技术。相反,代码可能允许多个线程推测性地创建单例。如果多个线程成功创建了对象,则第一个成功的线程将获胜,其他线程将销毁其实例并使用由获胜线程创建的实例。 如果创建额外的实例然后销毁它们是有益的,那么无锁方法可以很好地工作。但情况并非总是如此。例如,创建实例的多个副本可能太贵。在这种情况下,基于锁的方法更好。 |
Some1Else · 函数在Delphi中重新创建TForm 2 年前 |
Agmcz · Delphi安卓库。so未安装(AAB) 2 年前 |
nader · 如何使用delphi在web上提交表单 6 年前 |
kwadratens · Delphi中的卡方分布函数代码 6 年前 |
user9672569 · 如何在完整的位图图像中绘制阴影效果? 6 年前 |
mmmm · MSBuild(用于Delphi)Make-like功能 6 年前 |