gpt4 book ai didi

C++ 多线程将模板化的 std::bind 提供给另一个线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:54 25 4
gpt4 key购买 nike

我尝试将 std::bind 提供给当前在 condition_variable 中等待的另一个现有线程。我真的想让另一个线程保持事件状态而不是创建另一个线程。但我不知道如何将此 std::bind 提供给另一个线程,因为一切都是在编译时决定的。

我知道 boost 线程池管理它,我真的很想知道如何在没有 boost 的情况下做到这一点。

这是一些伪代码

class Exec
{
template<typename Func, typename... Args>
auto call(Func func, Args... args)
{
sendWork(std::bind(func, this->someMemberClass, args...)); // Async
return getResults(); // Waiting til get results
}

void waitThread()
{
//Thread waiting
// Will do the std::bind sent at sendWork
}
}

有人知道吗?

感谢您的宝贵时间!

最佳答案

如评论中所述,当前将通用函数传递给另一个线程的唯一方法是使用 std::function<void()>它禁止任何返回类型,但允许指定任何参数和参数数量,为了返回结果,您必须考虑回调。

关于C++ 多线程将模板化的 std::bind 提供给另一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32959011/

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