排序
面试题:C++ 什么场景用线程?什么场景用协程?
在 C++ 中,**线程(Thread)和协程(Coroutine)**是两种并发编程的工具,但它们适用于不同的场景。以下是它们的区别以及适用场景: 1. 线程(Thread) 特点: 操作系统级:线程由操作系...
面试题:C++ 的 async 使用时有哪些注意事项?
在 C++ 中,std::async 是一个用于异步执行任务的工具,它封装了线程创建和任务调度的细节,使得异步编程更加简单。然而,使用 std::async 时需要注意一些关键问题,以避免潜在...
面试题:C++ 的有栈协程和无栈协程有什么区别?
在 C++ 中,协程(Coroutine)是一种轻量级的并发编程工具,可以分为有栈协程(Stackful Coroutine)和无栈协程(Stackless Coroutine)。它们的主要区别在于栈的管理方式和实现机制。 1. 有栈...
面试题:请介绍 C++ 中 future、promise、packaged_task、async 的区别?
在 C++ 中,std::future、std::promise、std::packaged_task 和 std::async 是用于异步编程的工具,它们共同构成了 C++11 引入的并发编程模型。以下是它们的区别和用途: 1.&nbs...
面试题:C++ 如何实现线程池?给出大体思路?
实现一个线程池(Thread Pool)是 C++ 并发编程中的常见任务。线程池的核心思想是预先创建一组线程,并将任务分配给这些线程执行,从而避免频繁创建和销毁线程的开销。以下是实现线程池的大体思...
面试题:什么情况下会出现死锁?如何避免死锁?
死锁(Deadlock)是多线程编程中常见的问题,指的是两个或多个线程互相等待对方释放资源,导致所有线程都无法继续执行。以下是死锁的产生条件、示例以及避免死锁的方法。 1. 死锁的产生条...
面试题:如何解决 C++ 中条件变量的信号丢失和虚假唤醒问题?
在 C++ 中,条件变量(std::condition_variable)是多线程编程中常用的同步机制,用于线程间的通信。然而,使用条件变量时可能会遇到 信号丢失 和 虚假唤醒 的问题。以下是...
面试题:C++ 中如何使用线程局部存储?它的原理是什么?
在 C++ 中,线程局部存储(Thread Local Storage, TLS) 是一种机制,允许每个线程拥有自己的变量实例,即使这些变量在代码中看起来是全局或静态的。线程局部存储的原理和用法如下: 1.&nb...
面试题:C++ 中如何设计一个线程安全的类?
在C++中设计一个线程安全的类,意味着在多线程环境下,类的成员函数可以被多个线程安全地调用,而不会导致数据竞争或未定义行为。以下是设计线程安全类的一些关键步骤和注意事项: 1. 使用互斥...
面试题:C++ 的条件变量为什么要配合锁使用?
在 C++ 中,条件变量(std::condition_variable)通常需要与锁(如 std::mutex)配合使用,主要原因是为了解决 竞争条件 和 线程同步 的问题。以下是详细解释: 1.&nb...