如何将函数参数传递给 boost::thread_groups::create_thread()

2024-02-27

我是新来的增强线程我试图了解如何将函数参数传递给boost::thread_groups::create_thread()功能。在阅读了一些教程和 boost 文档后,我了解到可以简单地将参数传递给这个函数,但我无法让这个方法起作用。

我读到的另一种方法是使用函子将参数绑定到我的函数,但这会创建参数的副本,并且我严格要求传递 const 引用,因为参数将是大矩阵(我计划使用boost::cref(Matrix)一旦我让这个简单的例子发挥作用)。

现在,让我们开始讨论代码:

void printPower(float b, float e)
{
    cout<<b<<"\t"<<e<<"\t"<<pow(b,e)<<endl;
    boost::this_thread::yield();
    return;
}

void thr_main()
{
    boost::progress_timer timer;
    boost::thread_group threads;
    for (float e=0.; e<20.; e++)
    {
        float b=2.;
        threads.create_thread(&printPower,b,e);
    }
    threads.join_all();
    cout << "Threads Done" << endl;
}

这不会编译并出现以下错误:

mt.cc: In function âvoid thr_main()â:
mt.cc:46: error: no matching function for call to âboost::thread_group::create_thread(void (*)(float, float), float&, float&)â
/usr/local/boost_1_44_0/include/boost/thread/detail/thread.hpp: In member function âvoid boost::detail::thread_data<F>::run() [with F = void (*)(float, float)]â:
mt.cc:55:   instantiated from here
/usr/local/boost_1_44_0/include/boost/thread/detail/thread.hpp:61: error: too few arguments to function

我究竟做错了什么?


你不能将参数传递给boost::thread_group::create_thread()函数,因为它只有一个参数。你可以使用boost::bind:

threads.create_thread(boost::bind(printPower, boost::cref(b), boost::cref(e)));
#                                             ^ to avoid copying, as you wanted

或者,如果您不想使用boost::bind,你可以使用boost::thread_group::add_thread()像这样:

threads.add_thread(new boost::thread(printPower, b, e));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将函数参数传递给 boost::thread_groups::create_thread() 的相关文章

  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • C#6 中的长字符串插值行

    我发现 虽然字符串插值在应用于现有代码库的字符串 Format 调用时非常好 但考虑到通常首选的列限制 字符串对于单行来说很快就会变得太长 特别是当被插值的表达式很复杂时 使用格式字符串 您将获得一个可以拆分为多行的变量列表 var str
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 通过 Tab 键浏览 XML 文档字段

    In VB NET you can move through the fields in the XML member documentation with the Tab key 这在 C 中不起作用 还有其他方法吗 除了用鼠标将光标放在
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne

随机推荐

  • Magento:如何加载产品及其在管理中使用的所有数据

    我正在尝试获取捆绑选项数据 使用这个 product gt getBundleOptionsData我需要使用它 因为我正在尝试以编程方式更改数据 并且我想以与 admin 中使用的方式尽可能接近的方式进行操作 但是 当我 var dump
  • jQuery .prop("disabled", false) 未启用输入

    在页面加载上禁用输入后 我在重新启用输入时遇到问题 我使用两个输入来接受两个日期 但我希望在第一个输入有值之前不启用第二个输入 div div
  • 为什么此模式生成关系 n:m

    我有这个 schema yml 文件 只是相关部分 SdrivingMaquina actAs Timestampable columns idmaquina type integer 8 autoincrement true notnul
  • 仅在打开的文件中搜索和替换 (netbeans)

    有人知道是否可以在 netbeans 中搜索和替换所有打开的文件吗 如果有的话 似乎找不到这个选项 我正在使用 Netbeans 6 9 PHP IDE CTRL SHIFT H 这将打开 在项目中替换 您可以在其中搜索和替换所有打开的项目
  • 如何在atom包内设置断点?

    我想弄清楚为什么这个原子包https github com AtomLinter linter elixirc https github com AtomLinter linter elixirc 行为不端 它的作者说我应该在包的某些函数中
  • Asp .Net Core 2 + SignalR (1.0.0-alpha2-27025) + /signalr/negotiate 404 错误

    我将 SignalR 添加到 ASP Net Core 2 应用程序 packages Microsoft AspNetCore All 版本 2 0 0 Microsoft AspNetCore SignalR 版本 1 0 0 alph
  • ES6 导出对象的所有值

    假设我有一个模块 my module js 有一个对象 该对象应该是它的返回值 let values a 1 b 2 c 3 export values results in SyntaxError Unexpected token 所以我
  • FParsec 只解析括号之间的 expr

    我正在编写一个解析器 用于学习 pourpuses 我希望它能够解析类似的结构 let myVar be 40 plus 2 and let myVar be 40 plus 2 没有问题 但我的解析器不 理解 前者 它看到的是40并认为
  • Apache Netbeans 版本 11.1 使用 OpenJDK 11 构建错误

    我有一个使用 JDK 8 和 NB 8 2 创建的项目 我想使用 OpenJDK 11 将该项目迁移到 NB 11 1 环境是 Windows 10 上的 NB 11 1 全新安装 使用 OpenJDK 11 0 2 我将所有源代码和库 j
  • updatepanel 回发后调用 javascript

    我将以下 javascript 代码内联放置 但在 updatepanel 完成回发后它不会触发 function EndRequestHandler sender args alert this should work Sys WebFo
  • Jquery 选项卡,在 Firefox 中重新加载 jQuery HTML 后,未格式化的列表会闪烁

    我正在使用最新的 jQuery 选项卡 并且我的所有选项卡 以及它们上面的其他内容 都位于包含 Div 中 其中一个选项卡中有一个表单 当表单提交时 通过 AJAX 对其进行处理 然后返回的 HTML 替换整个包含的 Div 返回的 HTM
  • 反射应该使用到什么程度?

    我们在项目中遇到了一个非常棘手的场景 我们在项目中使用了很多反射 我们有 由属性和反射驱动的验证框架 使用属性和反射将 DataRow 转换为实体对象的扩展方法 反之亦然 我们对 DataTable 和 EntityCollections
  • 统计PHP页面中所有HTML标签

    我花了时间在正则表达式上解决这个问题但没有结果 我尝试使用 PHP 5 3 解决这个问题 诸如 在页面中重复的次数以及有关页面中所有标签的信息等信息 不幸的是 您的问题目前的形式几乎无法理解 请尝试更新并更具体 如果你想计算页面中所有 HT
  • Intl.DateTimeFormat 选项哈希:使用“2 位数字”获取前导零

    Intl DateTimeFormat en US weekday long year numeric month long day 2 digit hour 2 digit minute 2 digit second 2 digit fo
  • 如何使用 d3.js 将填充部分添加到 SVG 圆圈

    我正在使用 d3 js 生成一些 SVG 圆圈 我能够生成它们 但我不知道如何将它们分成 4 个相等的部分并为每个部分填充颜色 我正在使用 d3 js 版本 4 这是我的小提琴中的 javascript 片段 var nodes type
  • 无法通过curl或Postman访问docker url

    我可以使用以下路径在浏览器中访问我的网站 my dash docker localhost 8000 我正在尝试编写一个API端点 但无法通过Postman或curl访问该网站 curl my dash docker localhost 8
  • 将数据存储到 DOM - 元素值与数据属性

    要将值存储在 DOM 元素中 我们可以通过data属性 abc data item 1 检索做 abc data item 但今天我了解到我们也可以这样做 abc 0 item 1 检索做 abc 0 item 它们之间有什么区别 哪一个更
  • Python 多线程在 IO 任务中没有任何好处?

    我正在尝试用 python 读取数千小时的 wav 文件并获取它们的持续时间 这本质上需要打开 wav 文件 获取帧数并考虑采样率 下面是代码 def wav duration file name wv wave open file nam
  • uitableviewcell 上的 tableview 中出现重复行

    我发现一些帖子与我的问题相似但不完全相同 在我的应用程序中 用户可以在多个 uitableviews 之间导航以深入了解所需的结果 当用户向前 然后向后 然后向前等时 可以注意到行正在被重绘 重写 并且文本变得越来越粗 我发现在一些帖子中这
  • 如何将函数参数传递给 boost::thread_groups::create_thread()

    我是新来的增强线程我试图了解如何将函数参数传递给boost thread groups create thread 功能 在阅读了一些教程和 boost 文档后 我了解到可以简单地将参数传递给这个函数 但我无法让这个方法起作用 我读到的另一