并发编程中确保线程安全是一个重要的问题,因为多个线程同时访问和修改共享资源时可能会导致数据不一致或其他不可预测的行为。以下是一些常用的方法来确保线程安全:
std::atomic)来执行不需要锁的简单操作,如计数器、标志位等。std::mutex、std::lock_guard、std::shared_mutex等。ConcurrentHashMap、CopyOnWriteArrayList等。std::shared_mutex)可以提高性能。#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 全局互斥锁
void print_block(int n, char c) {
mtx.lock(); // 获取锁
for (int i = 0; i < n; ++i) {
std::cout << c;
}
std::cout << '\n';
mtx.unlock(); // 释放锁
}
int main() {
std::thread th1(print_block, 50, '*');
std::thread th2(print_block, 50, '$');
th1.join();
th2.join();
return 0;
}
在这个示例中,print_block函数使用了一个全局互斥锁mtx来确保两个线程不会同时打印输出,从而避免了竞争条件。
通过这些方法,可以有效地确保并发编程中的线程安全。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。