![]() |
1
6
您需要同步对任何对象的访问,其中
实现同步有多种方法:锁(互斥锁)和原子可能是最常用的两种方法,尽管有些数据结构有无锁实现。
任何const限定的成员函数都应该可以安全地调用。 赫伯·萨特写过 a whole series of articles on Effective Concurrency 你可能会觉得有用。他讨论了各种设计模式、常见缺陷、锁层次结构和其他并发主题。 |
![]() |
2
2
对。只读访问可以 从未 生成多线程冲突。 |
![]() |
3
1
互斥锁和条件变量是“多线程工具链”的一部分,用于实现多线程应用程序。因此,根据定义,它们是“线程安全的”。
在这种情况下,您需要在保持互斥量的情况下操纵条件变量,以避免出现这种竞争条件。
简单(如字节缓冲区或C样式结构)可以同时安全地访问。任何变化的对象都需要同步。
据我所知,标准的C++库包通常不是线程安全的。 |
![]() |
4
0
通常,您会让其他线程等待条件而不是锁,但如果这样做,则获取锁的线程将阻止被条件唤醒的线程获取锁,并且发出信号的线程将不是继续的线程,而是等待锁。 这是典型的使用模式: Boost Conditions |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |