草庐IT

Multithreading

全部标签

c++ - 从工作线程更新 QtCharts 的正确方法?

因为这是我的第一个问题,所以我想说StackOverflow帮助了我无数次。谢谢。现在是我的问题。我目前正在尝试在Qt5.8中实现一个简单的数据采集应用程序。该应用程序必须与DSP通信并以100Hz至10kHz的速率获取一些电压。由于我需要对获取的电压进行一些额外的计算,我认为在与GUI线程不同的线程中进行数据采集和操作是个好主意。数据采集和附加计算在单独的线程中工作得很好。我的问题是,使用QtCharts异步显示工作线程结果的正确方法是什么?如有任何建议,我们将不胜感激。最好的问候,T.Krastev 最佳答案 遇到了同样的问题。

c++ - 如何使用 boost::latch?

我试图在我的程序中使用boost::latch来阻止等待,直到所有线程完成或超时。我的代码如下。ctpl是从https://github.com/vit-vit/CTPL采用的线程池库.#include#include#include#includeusingnamespacestd;intmain(intargc,char**argv){ctpl::thread_poolouter_tp(100);ctpl::thread_poolinner_tp(5,5000);autoout_func=[&inner_tp](intouter_id,intouter_invoke_idx){in

c++ - 协程 TS 2017 的实现示例

在C++coroutinesTS(2017),有一个等待对象的例子。templateautooperatorco_await(std::chrono::durationd){structawaiter{std::chrono::system_clock::durationduration;...awaiter(std::chrono::system_clock::durationd):duration(d){}boolawait_ready()const{returnduration.count()h){...}};returnawaiter{d};}usingnamespacestd

c++ - 线程分配的内存块是否与线程本身具有相同的亲缘关系,直到线程退出?

这是一个关于NUMA的问题。例如,在下面的代码中,缓冲区是否在线程/进程的整个生命周期的本地内存中分配?for(intth=0;th更新:为了使问题更直接,让我这样问。如果我同时启动了10个线程(比如t0到t9),并且在每个线程的范围内,它会分配一个内存块(比如m0到m9)。在线程退出之前,线程t_n是否总是在m_n(n从0到9)上运行,或者线程0可能会迁移并在内存9上运行?在我的情况下,内存块不是很大,通常只有几兆字节。 最佳答案 我认为这种行为与操作系统的实现有关,但我相信对于使用CONFIG_NUMA选项配置和构建的Linux

c++ - 无法在c++中的动态加载插件中成功调用函数

我已经使用自定义插件加载器类成功加载了一个C++插件。每个插件都有一个extern"C"create_instance函数,它使用"new"返回一个新实例。插件是一个抽象类,具有一些非虚函数和几个protected变量(std::vectorrefList是其中之一)。plugin_loader类成功加载,甚至调用加载类的虚方法(即“std::stringplugin::getName()”)。main函数创建了一个“host”的实例,其中包含指向类“plugin”的引用计数智能指针refptr的vector。然后,main创建一个实际执行dlopen/dlsym的plugin_loa

c++ - 控制 OpenMP 程序中的 FPU 行为?

我有一个修改FPU控制字的大型C++程序(使用_controlfp())。它揭露一些FPU异常并安装SEHTranslator以生成类型化的C++异常。我正在使用VC++9.0。我想使用OpenMP(v.2.0)来并行化我们的一些计算循环。我已经成功地将它应用于一个,但数值结果略有不同(虽然我知道这也可能是由于计算以不同的顺序执行)。我假设这是因为FPU状态是特定于线程的。有没有办法让OpenMP线程从主线程继承该状态?或者是否有某种方法可以使用OpenMP指定新线程执行设置正确状态的特定函数?处理这种情况的惯用方法是什么? 最佳答案

c++ - 并发空间上很酷的开源项目?

我正在C和C++并发编程空间中寻找很酷的开源项目,这些项目需要积极的开发人员贡献。我是领域中立的,但会更喜欢数学/统计相关领域的东西。任何提醒的人? 最佳答案 提升C++库集合我建议看一下boostC++librarycollection.有几个处理并发处理的有趣库,使用这些库将极大地提高您自己的通用和跨平台C++编程技能。他们的一些libraries与并发有关。boost的好处在于它分布广泛,并且是C++0x对C++标准的更新中出现的许多变化的源头,因此每一个贡献都会产生巨大的影响。接受的并发库-Boost.Interproces

c++ - 将 boost::mutex 与 MFC 线程 (AfxBeginThread) 一起使用?

当您不使用boost::thread而是通过AfxBeginThread使用MFC线程功能时,您能否使用boost::mutex库来保护代码的关键部分?如果是这样,这样做有什么问题吗? 最佳答案 一个(真实的)线程是一个(真实的)线程。Boost对线程是直接创建(WindowsAPI)还是通过Boost创建没有特殊假设。简答:没问题。 关于c++-将boost::mutex与MFC线程(AfxBeginThread)一起使用?,我们在StackOverflow上找到一个类似的问题:

c++ - 线程在开源应用程序中的使用示例

我已阅读有关pthreads和OpenMP的文档并且我理解它们。我已经阅读了示例并使用它们实现了程序的一小部分。是否有使用C++编写并广泛使用线程的生产开源应用程序的良好示例? 最佳答案 我能想到的两个是LuxRender和Blender. 关于c++-线程在开源应用程序中的使用示例,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10260711/

c++ - 当一个线程在另一个线程中捕获异常后运行时,进程中止并发出 SIGABRT

我有一个退出处理程序线程等待工作线程完成其工作的条件。信号是从工作线程的析构函数完成的。下面是退出处理线程的代码。voidClass::TaskExitHandler::run()throw(){while(!isInterrupted()){_book->_eot_cond.wait();//Waitingonthiscondition{CLASS_NAMESPACE::Guardeguard(_book->_exitlist_lock);list::const_iteratoritr=_book->_exited_tasks.begin();for(;itr!=_book->_ex