面试输出一个 线程池
#pragma once
#include <thread>
#include <functional>
#include <vector>
#include <queue>
#include <mutex>
#include <atomic>
#include <condition_variable>
namespace yixiao
{
/**
* @brief 线程池
*
* 1.实现自旋锁队列
* 2.使用条件变量 实现 信号量
* 3.实现ThreadPool
*
*/
template <typename T>
class SpinLockQueue
{
public:
void Push(T &&value)
{
// lock
while (std::atomic_flag_test_and_set_explicit(&spin_lock_, std::memory_order_acquire))
;
queue_.push(std::move(value));
// unlock
std::atomic_flag_clear_explicit(&spin_lock_, std::memory_order_release);
}
std::optional<T> Pop()
{
// lock

本文主要探讨在面试中如何输出一个线程池的实现,内容来源于腾讯3TS开源项目,通过视频讲解详细阐述了线程池的设计与工作原理。
最低0.47元/天 解锁文章
2020

被折叠的 条评论
为什么被折叠?



