排序
面试题:什么场景下使用锁?什么场景下使用原子变量?
在 C++ 多线程编程中,锁(如 std::mutex) 和 原子变量(如 std::atomic) 是两种常用的同步机制。它们各有优缺点,适用于不同的场景。以下是它们的对比以及适用场景...
面试题:如何解决 C++ 中条件变量的信号丢失和虚假唤醒问题?
在 C++ 中,条件变量(std::condition_variable)是多线程编程中常用的同步机制,用于线程间的通信。然而,使用条件变量时可能会遇到 信号丢失 和 虚假唤醒 的问题。以下是...
面试题:请介绍 C++ 的 6 种内存序?
在 C++ 中,内存序(Memory Order)是与原子操作和多线程编程相关的重要概念。C++11 引入了 std::memory_order 枚举类型,用于指定原子操作的内存顺序。内存序决定了原子操作在多线程环境中的可...
面试题:C++ 中 thread 的 join 和 detach 的区别?
在 C++ 中,std::thread 提供了两种管理线程生命周期的方式:join() 和 detach()。它们的核心区别在于线程的执行与主线程的关系以及资源的释放方式。 1. join() 功能: 阻...
面试题:如何理解 C++ 中的 atomic?
在 C++ 中,std::atomic 是一个模板类,用于实现原子操作。原子操作是不可分割的操作,即在多线程环境中,一个线程执行原子操作时,不会被其他线程中断。std::atomic 提供了一种高效...
面试题:C++ 什么场景用线程?什么场景用协程?
在 C++ 中,**线程(Thread)和协程(Coroutine)**是两种并发编程的工具,但它们适用于不同的场景。以下是它们的区别以及适用场景: 1. 线程(Thread) 特点: 操作系统级:线程由操作系...
面试题:请介绍 C++ 中 future、promise、packaged_task、async 的区别?
在 C++ 中,std::future、std::promise、std::packaged_task 和 std::async 是用于异步编程的工具,它们共同构成了 C++11 引入的并发编程模型。以下是它们的区别和用途: 1.&nbs...
面试题:C++ 中锁的底层原理是什么?
在 C++ 中,锁(如 std::mutex)的底层原理主要依赖于操作系统的同步机制和硬件支持的原子操作。锁的实现通常涉及以下几个关键点: 1. 锁的基本概念 锁是一种同步机制,用于保护共享...