问题标签 [boost-thread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
419 浏览

c++ - 错误使用 scoped_lock 导致的内存泄漏?

我有内存泄漏,我猜它是由 scoped_lock (Boost) 的错误使用引起的。但是,我无法找到确切的问题,而且我确实相信编写代码的方式也不完全正确。

代码在此类中: http ://taf.codeplex.com/SourceControl/changeset/view/31767#511225

主要的重要方法是ThreadedLoop()。基本上,此方法在线程中启动,并定期检查要为雅虎下载的市场数据。对于每只股票(或其他),将创建一个新线程(用于 ExecuteNextRequest() 方法),将指向包含股票名称的字符串的指针作为参数传递。这是我做的唯一内存分配,但它是在线程执行结束时释放的。

我也会对如何增强此代码感兴趣(当然我可以使用线程池,但这还不是重点)。非常感谢!

0 投票
2 回答
1987 浏览

c++ - C++ boost::thread 和自动锁定容器

有没有办法在访问时自动锁定 STL 容器,而不必在它周围锁定和释放?

0 投票
5 回答
12127 浏览

c++ - 从 boost::threaded 成员函数获取返回值?

我有一个像下面这样的工人阶级:

它旨在与 boost::thread 和 boost::bind 一起执行,例如:

我的问题是,如何获得 Worker::Do 的返回值?

提前致谢。

0 投票
6 回答
4656 浏览

java - java.util.concurrent 与 Boost 线程库

Boost Thread 库与 java.util.concurrent 库相比如何?

性能至关重要,因此我更愿意继续使用 C++(尽管如今 Java 快得多)。鉴于我必须用 C++ 编写代码,存在哪些库可以使线程处理变得简单且不易出错。

我最近听说,从 JDK 1.5 开始,Java 内存模型已更改以修复一些并发问题。C++ 怎么样?我上一次在 C++ 中进行多线程编程是在 3-4 年前,当时我使用了 pthreads。虽然,我不想再将它用于大型项目。我知道的唯一其他选择是 Boost Threads。但是,我不确定它是否好。我听说过关于 java.util.concurrent 的好消息,但还没有关于 Boost 线程的消息。

0 投票
2 回答
4310 浏览

join - 提升线程并加入

我这里有这个用 g++ theFile.cc -lboost_thread 编译的测试用例。运行程序时,它似乎挂在 join 命令上。我不确定为什么。就像 interrupt_point() 函数没有从主线程获取加入请求一样。

谢谢阅读。

编辑:另外,如果你删除 while 循环,程序会干净地退出......提升版本 1.39.0

0 投票
2 回答
37354 浏览

c++ - boost::thread sleep() 有什么作用?

我目前正在为 boost 线程开发一个小型包装类,但我并没有真正了解睡眠功能是如何工作的,这就是我到目前为止所得到的:

到目前为止,这就是我实现它的方式,但我真的不明白静态 this_thread::sleep 方法如何知道如果我的线程包装器的多个实例处于活动状态时要休眠哪个线程。这是实施它的正确方法吗?

0 投票
4 回答
176 浏览

c++ - 在多线程应用程序中控制对输出的访问

我有一个创建作业队列的应用程序,然后多个线程执行作业。通过执行它们,我的意思是它们使用作业字符串调用 system() 。

问题是标准输出的输出看起来像问题底部的输出。我希望每个应用程序运行分开,所以输出看起来像:

我正在使用我无法控制的程序,因此无法将 IO 包装在互斥锁中。

如何使输出看起来像上面那样?

0 投票
2 回答
367 浏览

c++ - 如何为单线程 GUI 应用程序创建额外的工作线程?

我目前正在为现有的 VCL 应用程序开发新功能。该应用程序使用名为 TeeChart 的第三方包创建图表和静态图像。在一个实例中,我必须加载 200 万个数据点才能创建静态图像图表。但是,这需要一段时间才能加载,并且用户在完成之前无法在应用程序中执行任何操作。因此,我更愿意创建一个工作线程来处理数据点,这样 GUI 就不会冻结。

该方法setData()设置以下成员变量,然后 VCL 组件将继续使用这些变量来创建图表:

创建工作线程时应该考虑哪些事项?

当所有数据处理都以一种方法进行时,我如何使用 boost 创建线程setData(){...}

0 投票
1 回答
14354 浏览

boost - 线程示例的静态编译

我按如下方式编译了 Boost C++ 库:

没有错误。然后我编译了以下源:

使用:

该程序编译并运行良好,因为 Boost 库位于/usr/local/lib. 当我从中删除/usr/local/lib/etc/ld.so.conf.d/libc.conf遇到以下错误(毫不奇怪):

如何Thread.cpp静态编译链接到 Boost?我尝试了以下方法:

我安装了以下 Boost 库:

我收到以下编译错误:

有任何想法吗?

0 投票
2 回答
880 浏览

c++ - 启动时提升线程核心

我有一个程序可以在其整个生命周期中启动和拆除多个线程。一切都很好,但最终,我得到了以下核心转储堆栈跟踪。

起初,我正在泄漏线程,并认为核心是由于达到了当前线程数的最大限制,但现在似乎即使我没有,也会出现这个问题。作为参考,在上面的核心中有 13 个活动线程正在执行。

我做了一些搜索,试图弄清楚为什么 start_thread 会核心,但我没有遇到任何事情。有人有想法么?