|
|
1
24
视情况而定。 C++语言不涉及线程或原子性。 但关于 最 在现代CPU中,读取整数是一个原子操作,这意味着您将始终读取一致的值,即使没有互斥。 然而 ,没有互斥锁或其他形式的同步,编译器和CPU可以自由地对读写进行重新排序,因此任何更复杂的事情,任何涉及访问多个变量的事情,在一般情况下都是不安全的。 假设writer线程更新了一些数据,然后设置了一个整数标志来通知其他线程数据可用,那么可以对其重新排序,以便设置该标志 更新数据。除非您使用互斥或其他形式的内存屏障。 做 |
|
|
2
10
你有两个线程,它们交换信息,是的,你需要一个互斥,你可能还需要一个有条件的等待。
线程用于提高性能(或提高响应能力),轮询通常会导致性能下降,这可能是由于占用大量CPU或由于轮询间隔而引入延迟。 |
|
|
3
2
对如果线程a在线程b写入变量时读取变量,则可以读取未定义的值。读写操作不是原子操作,尤其是在多处理器系统上。 |
|
|
4
2
一般来说,如果变量是用“volatile”声明的,则不会。而且只有当它是一个单一的变量时——否则你应该对可能的种族非常小心。 |
|
|
5
2
实际上,没有理由为读取而锁定对对象的访问。您只想在写入时锁定它。这正是读写器锁的含义。只要没有写操作,它就不会锁定对象。它可以提高性能并防止死锁。有关详细说明,请参见以下链接: |
|
|
6
0
应保护对枚举的访问(读或写)。 还有一件事: 如果线程争用较少,并且线程属于同一进程,则临界区将优于互斥区。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |