使用C ++中的第三方库进行多线程

时间:2019-05-30 09:41:47

标签: c++ multithreading

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

//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
}

1 个答案:

答案 0 :(得分:0)

我不知道您使用的是哪个库,但是几乎可以确定,在1 NAME : Ram | 2 AGE : 12| 仍在同一数据集上运行之前,您无法启动Lib.ComputeErorrs()

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

  • “测量线程”:

    • 创建数据项
    • 致电Lib.SourceMeasure()
    • 将数据推送到FIFO队列
  • “计算线程”:

    • 如果队列为空,请挂一些
    • 从队列中选择数据项
    • 使用数据致电Lib.SourceMeasure()

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