当我们从堆中读取字符串时,该操作是原子读/写操作吗?
我在这里很困惑,如果我有像这样的字符串,Hello World那么这个字符串的大小是 11 * 2 = 22 字节,所以当编译器(86x/64x)读取这个字符串时,它根本无法在一个操作中读取字符串,所以它不是原子操作。
或者以另一种方式将字符串读取为字符数组,并且字符的每个读/写操作都是原子的。这是否意味着对字符串的读/写操作是原子的。
将字符串引用分配给另一个引用是一个原子操作,因为只分配了一个指针。
例如:
string x = "Hello";
string y = x; // This is an atomic operation: Reference assignment.
Run Code Online (Sandbox Code Playgroud)
但是,正如您所指出的,将字符串的内容复制到某处(例如,在进行 P/Invoke 调用时)不是原子操作。
请注意,由于字符串是不可变的,因此在托管代码中不会出现与更改字符串相关的多线程问题。
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |