c++++ 中的线程线程是轻量级的执行单元,可实现并发编程。使用 std::thread 类创建线程,并通过互斥锁、条件变量和自旋锁等同步机制维护共享数据的一致性。实战案例展示了使用线程并发计算求和的过程。

线程是轻量级的执行单元,与进程共享相同地址空间,可实现并发编程。
在 C++ 中,使用 std::thread 类创建线程:
#include <thread>
void thread_function() {
// 执行线程任务
}
int main() {
std::thread thread(thread_function);
thread.join(); // 阻塞主线程,直到线程执行完毕
return 0;
}为维护线程之间的共享数据一致性,需要使用同步机制:
立即学习“C++免费学习笔记(深入)”;
#include <mutex>
std::mutex mutex;
void thread_function() {
std::lock_guard<std::mutex> lock(mutex);
// 对共享数据进行操作
}#include <condition_variable>
std::condition_variable cv;
std::mutex cv_mutex;
void thread_function() {
std::unique_lock<std::mutex> lock(cv_mutex);
cv.wait(lock, [] { return condition_is_met; });
// 条件满足时,继续执行
}#include <atomic>
std::atomic_flag spinlock = ATOMIC_FLAG_INIT;
void thread_function() {
while (spinlock.test_and_set(std::memory_order_acquire));
// 对共享数据进行操作
spinlock.clear(std::memory_order_release);
}并发计算求和
#include <thread>
#include <vector>
std::mutex sum_mutex;
long long sum = 0;
void add_numbers(const std::vector<int>& numbers) {
for (int num : numbers) {
std::lock_guard<std::mutex> lock(sum_mutex);
sum += num;
}
}
int main() {
std::vector<std::thread> threads;
std::vector<int> numbers = {...}; // 要相加的数字列表
// 创建并执行线程
for (size_t i = 0; i < std::thread::hardware_concurrency(); i++) {
threads.emplace_back(add_numbers, numbers);
}
// 等待所有线程结束
for (auto& thread : threads) {
thread.join();
}
std::cout << "Sum: " << sum << std::endl;
return 0;
}以上就是C++ 中如何创建和管理线程?有哪些线程同步机制?的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号