gpt4 book ai didi

c++ - 如何使用 boost::thread 创建线程池

转载 作者:行者123 更新时间:2023-11-28 03:33:56 24 4
gpt4 key购买 nike

boost::threadnot-a-threadftor 时会创建一个新线程ftor 返回时,调用传递给它的线程退出。

我们使用线程池来最小化线程创建和销毁的成本。但是当提供的 ftor 返回时,线程池中的每个线程也会被销毁。

那么构建线程池背后的基本概念是什么?有没有我可以将 ftors 分配给该线程的永久线程?

最佳答案

线程池就是一堆已经在运行的线程,它们都在运行相同的功能。这个函数基本上只是在队列上等待,当队列中有一个“函数”时,它会提取并执行它。

伪代码:

void thread_pool_function()
{
while (true)
{
wait_for_signal_that_queue_is_not_empty();

function_to_call = queue.remove_top();

unklock_queue_semaphore();

function_to_call();
}
}

create_thread(thread_pool_function);
create_thread(thread_pool_function);
create_thread(thread_pool_function);
create_thread(thread_pool_function);

在上面的“代码”中现在有四个线程,所有线程最初都在等待将某些内容放入“队列”。当队列中有内容时,它会提取它,并将其作为函数调用。

这可能是实现线程池的最简单方法。

关于c++ - 如何使用 boost::thread 创建线程池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com