C++ 并发编程共18篇

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

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

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

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

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

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

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

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

面试题:C++ 中锁的底层原理是什么?

在 C++ 中,锁(如 std::mutex)的底层原理主要依赖于操作系统的同步机制和硬件支持的原子操作。锁的实现通常涉及以下几个关键点: 1. 锁的基本概念 锁是一种同步机制,用于保护共享...
程序百科的头像-程序百科程序百科21天前
0215

面试题:请介绍 C++ 的 6 种内存序?

在 C++ 中,内存序(Memory Order)是与原子操作和多线程编程相关的重要概念。C++11 引入了 std::memory_order 枚举类型,用于指定原子操作的内存顺序。内存序决定了原子操作在多线程环境中的可...
程序百科的头像-程序百科程序百科21天前
0227

面试题:C++ 的条件变量为什么要配合锁使用?

在 C++ 中,条件变量(std::condition_variable)通常需要与锁(如 std::mutex)配合使用,主要原因是为了解决 竞争条件 和 线程同步 的问题。以下是详细解释: 1.&nb...
程序百科的头像-程序百科程序百科21天前
02512

面试题:C++ 中如何使用线程局部存储?它的原理是什么?

在 C++ 中,线程局部存储(Thread Local Storage, TLS) 是一种机制,允许每个线程拥有自己的变量实例,即使这些变量在代码中看起来是全局或静态的。线程局部存储的原理和用法如下: 1.&nb...
程序百科的头像-程序百科程序百科21天前
03314

面试题:如何解决 C++ 中条件变量的信号丢失和虚假唤醒问题?

在 C++ 中,条件变量(std::condition_variable)是多线程编程中常用的同步机制,用于线程间的通信。然而,使用条件变量时可能会遇到 信号丢失 和 虚假唤醒 的问题。以下是...
程序百科的头像-程序百科程序百科21天前
0517

面试题:什么情况下会出现死锁?如何避免死锁?

死锁(Deadlock)是多线程编程中常见的问题,指的是两个或多个线程互相等待对方释放资源,导致所有线程都无法继续执行。以下是死锁的产生条件、示例以及避免死锁的方法。 1. 死锁的产生条...
程序百科的头像-程序百科程序百科21天前
03814