您好,我是昊天,国内某头部音频公司的C++主程,多年的音视频开发经验,熟悉Qt、FFmpeg、OpenGL。如果你对这些方面感兴趣,欢迎关注我的公众号,一起学习,一起进步。
各位读者朋友,我的上一篇文章,在发文64小时内,获得8000多阅读、近600转发,推荐大家看看:回调函数实战解读:从 C/C++ 到现代 C++ 实现方案
在上一篇文章的评论区中有位读者朋友希望多出点线程安全的模块
所以今天这篇文章从What、Why、How三个方面阐述线程安全,并提出了一些实战指南(Do)。
1. 什么是线程安全(What) 如下为一个简化的可能会触发线程不安全的例子
代码语言:javascript复制#include
#include
int main(){
int a=0;
std::thread t1([&a](){
for(int i =0;i<10000;i++){
a++;
}
});
std::thread t2([&a](){
for(int i =0;i<10000;i++){
a++;
}
});
if(t1.joinable()){
t1.join();
}
if(t2.joinable()){
t2.join();
}