更elegant或者现代的写法应该是:
template <class handler_t>
auto Enqueue(handler_t&& handler)-> std::future<decltype(handler())>
{
using return_type = decltype(handler());
std::unique_lock<std::mutex> lock(queue_mutex);
tasks.emplace(std::packaged_task<return_type>([handler= std::forward<handler_t>(handler)]
{ return handler(); }));
auto res = task.back().get_future();
condition.notify_one( );
return res;
}
这回简单明了了吧。user应该在Enqueue()一个lambda进来,这才是现代c++的用法
【 在 jjjrrrbbb 的大作中提到: 】
: GPT5给了个更现代的写法,替换了不再使用的一些废弃方式。我也不知道写的咋样,没细看
: class ThreadPool {
: public:
: ...................
--
FROM 115.193.181.*