C++中第三方库的多线程

Multi threading with third party library in C++

本文关键字:多线程 第三方 C++      更新时间:2023-10-16

我正在使用当前应用程序中第三方库中的两个函数。第一个函数,又名 .SourceMeasure基本上从某些硬件收集数据,而第二个功能,又名。ComputeErrors 纯粹是基于从第一个函数收集的数据进行计算。测量计算执行将循环 5 次。我正在考虑创建一个多线程来移动.计算错误到工作线程以节省一些时间。如果的话会有问题吗?源度量位于主线程和 .工作线程中的计算错误,它们都来自同一个库?

//The execution is something like this..    
for (int i=0; z < 5; z++)
{
   Lib.SourceMeasure (data)
   Lib.ComputeErorrs (data)  //Want to put this in a separate thread
}
我不知道

你正在使用哪个库,但几乎可以肯定的是,在Lib.SourceMeasure()仍在运行之前,你不能启动Lib.ComputeErorrs(),在同一数据集上。

您可以做的是设置一个队列和两个线程:

  • "测量线程":

    • 创建数据项
    • 打电话给Lib.SourceMeasure()
    • 将数据推送到 FIFO 队列
  • "计算线程":

    • 如果队列为空,则挂起一些
    • 从队列中选取数据项
    • 使用数据调用Lib.ComputeErorrs()

根据结果,测量和计算将并行运行(但不是相同的项目,测量将提前一些(。您只需要找到一个线程安全队列。