cppcon 2021 safety guidelines for C parallel and concurrency
3.14 MB
52 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .pdf | 3 |
摘要 | ||
文档讨论了C++在安全关键系统中的应用,特别是在汽车行业中的并行和并发安全性。MISRA和C++ CG指南强调了 mutexes 的使用规则,确保在异常条件下通过RAII控制状态,并建议避免共享可变状态和静态初始化问题。同时,文档提到了C++11及后续版本中引入的并行和并发特性,如线程、异步代理、并行算法等,并讨论了这些特性在安全关键系统中的应用挑战和解决方案。 | ||
AI总结 | ||
以下是对文档《cppcon 2021 safety guidelines for C parallel and concurrency》的总结,语言简洁明了,重点突出核心观点和关键信息:
---
### 1. 当前C++安全状况:MISRA和C++ CG
- **MISRA和C++ WG**:MISRA(用于汽车行业的安全关键系统指导方针)和C++(rulemaking group)共同关注C++的安全性。
- **指导方针的重要性**:C++ CG和MISRA是当前最重要的两项安全指南,涵盖了C++编程的安全规则。
- C++ CG:结合元规则(meta rules)和可自动化检查的规则,强调类型安全、资源安全和高性能。
- MISRA:专注于汽车行业的安全关键系统。
- **规则覆盖率**:C++ CG、MISRA和CERT C++的规则覆盖率分别为54%、76%和69%,显示现有规则的广泛适用性。
### 2. 并行安全规则
- **并发安全关键条款**:例如Rule 13,要求对mutexes使用RAII(资源获取即初始化)机制,通过`std::lock_guard`等封装mutex,以确保在异常情况下正确释放资源。
- **工具和人工审查**:工具可以通过检查`std::lock`的参数来自动检测违规。
- **其他并行安全规则**:
- 避免共享可变状态(避免数据竞态)。
- 使用顺序容器而非未排序容器。
- 针对内存模型的安全规则,确保并发操作的正确性。
### 3. 汽车安全案例
- **ISO26262要求**:ISO26262指出并发是我必须纳入“建模和编码指南”的主题。
- **并发的必要性**:并发是否应出现在安全关键系统中需要仔细评估。嵌入式系统通常采用静态执行模式,多核芯片上的组件若不交互,可不被视为并发。
- **并发的安全影响**:并发的安全性需在整体安全策略中谨慎评估。
### C++并行与并发特性
- **C++版本演进**:C++11、14、17、20逐步引入了更多并行和并发特性,包括:
- 线程、lambda、异步代理、协程等。
- 并行算法、执行器、支持异构计算的抽象。
- 原子操作、锁、内存模型等。
- **C++20新特性**:
- `jthread`和断点,提升并发控制的安全性。
- 原子引用(`atomic_ref`)、门闩和屏障等,增强并发编程的能力。
- 原子操作的兼容性改进,减少内存模型中的空白和不确定性。
- **安全关键API**:新一代API在图形、计算和显示领域更注重安全性,减少API表面积,消除歧义和未定义行为,提高确定性。
### 未来展望
- **整合安全与新技术**:C++需从顺序执行向并发、由并发向异构计算演进,满足以下需求:
- 与机器学习(ML)和人工智能(AI)的安全性集成。
- 适应汽车行业的新标准(如UL 4600、SAE ORAD)。
- **MISRA和C++ CG的未来方向**:
- 继续扩展指南范围,发布更多版本。
- 重点关注高性能、优雅的代码风格和静态检查。
### 总结
文档强调了C++在并行和并发中的安全性挑战,提出了MISRA和C++ CG的核心规则,并探讨了未来C++在安全关键系统中的发展方向。关键信息包括:
1. 并发和并行的安全性需谨慎评估,尤其是在汽车行业。
2. C++ CG和MISRA提供了重要的安全指南和工具支持。
3. C++的新特性(如C++20)在提升并发安全性方面具有重要作用。
4. 未来需进一步整合安全性与新技术(如ML、异构计算)。 |
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
40 页请下载阅读 -
文档评分