C++ 并发编程共18篇

面试题:什么场景下使用锁?什么场景下使用原子变量?

在 C++ 多线程编程中,锁(如 std::mutex) 和 原子变量(如 std::atomic) 是两种常用的同步机制。它们各有优缺点,适用于不同的场景。以下是它们的对比以及适用场景...
程序百科的头像-程序百科程序百科35天前
0389

面试题:如何理解 C++ 中的 atomic?

在 C++ 中,std::atomic 是一个模板类,用于实现原子操作。原子操作是不可分割的操作,即在多线程环境中,一个线程执行原子操作时,不会被其他线程中断。std::atomic 提供了一种高效...
程序百科的头像-程序百科程序百科35天前
0537

面试题:C++ 的 async 使用时有哪些注意事项?

在 C++ 中,std::async 是一个用于异步执行任务的工具,它封装了线程创建和任务调度的细节,使得异步编程更加简单。然而,使用 std::async 时需要注意一些关键问题,以避免潜在...
程序百科的头像-程序百科程序百科35天前
03012

面试题:请介绍 C++ 中 future、promise、packaged_task、async 的区别?

在 C++ 中,std::future、std::promise、std::packaged_task 和 std::async 是用于异步编程的工具,它们共同构成了 C++11 引入的并发编程模型。以下是它们的区别和用途: 1.&nbs...
程序百科的头像-程序百科程序百科35天前
0406

面试题:C++ 中如何设计一个线程安全的类?

在C++中设计一个线程安全的类,意味着在多线程环境下,类的成员函数可以被多个线程安全地调用,而不会导致数据竞争或未定义行为。以下是设计线程安全类的一些关键步骤和注意事项: 1. 使用互斥...
程序百科的头像-程序百科程序百科36天前
02413

面试题:C++ 中 thread 的 join 和 detach 的区别?

在 C++ 中,std::thread 提供了两种管理线程生命周期的方式:join() 和 detach()。它们的核心区别在于线程的执行与主线程的关系以及资源的释放方式。 1. join() 功能: 阻...
程序百科的头像-程序百科程序百科36天前
0347

面试题:C++ 中 jthread 和 thread 的区别?

在 C++20 中引入了 std::jthread,它是 std::thread 的增强版本,主要区别在于 std::jthread 提供了更安全和更方便的线程管理功能,特别是自动线程回收和协作中断支持...
程序百科的头像-程序百科程序百科36天前
03210

面试题:C++ 中 lock_guard 和 unique_lock 的区别?

在 C++ 中,std::lock_guard 和 std::unique_lock 都是用于管理互斥锁(std::mutex)的 RAII 包装器,它们的主要目的是确保锁在作用域结束时自动释放,从而避免死锁或资源泄漏。...
程序百科的头像-程序百科程序百科36天前
02610