确保两个线程同时启动

我有一个使用Java和C ++编写代码的应用程序。在此应用程序中,我需要有多个精确持续N秒的“试用”(假设N = 15)。我还需要每0.005秒记录一次当前状态。为此,我有以下代码:

std::thread timerTrial(&endTrial,this);
std::thread timerLog(&log,this);
std::thread timerTrial(&endTrial,this);
timerLog.detach();
timerTrial.detach();

void endTrial(){
    usleep(TIME);
    isOver = true ;
    //...
}

void log(){
    while(isOver == false){
        usleep(TIMELOG);
        //Do the logging
    }
}

问题是,当我查看日志记录(然后将其写入文件中)时,我看到的日志记录行数有所不同(因此,意味着一个试验的日志记录持续到14.5秒,而其他的14.3秒记录了一次。其他14.8)。有什么方法可以改进此代码,以减少每次试用之间的差异。

我认为我必须执行的日志记录log()可能会导致一小段延迟,但老实说,这是一个很小的日志记录(主要是将内容添加到std :: vector中)。是否应该创建另一个并行线程来执行此日志记录,以免whilelog()函数的循环中浪费时间

我缺乏改进该代码的想法,以减少每次试用之间的差异。我希望我的问题足够清楚。如果不能随意发表评论,请要求进一步的解释。

提前致谢,

事实证明,我发现了一种可行的解决方法,并且不会降低UI的速度。我只是通过for循环将这两个线程组合到一个线程中

最终代码看起来像这样。

std::thread timerTrial(&endTrial,this);
//....
void endTrial(){
    int nbOfLogsNeeded = //Compute how many logs I will need during the time of trial
    for(int i = 0 ; i < nbOfLogsNeeded ; i++){
        std::this_thread::sleep_until(std::chrono::system_clock::now() + std::chrono::milliseconds(50));
        //Perform Logging
    }
}

它不能完全回答问题,但是解决方法对我来说很好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何同时启动两个线程(几乎)?

来自分类Dev

同时运行两个线程

来自分类Dev

Java启动两个线程?

来自分类Dev

两个线程同时访问同一ArrayList?

来自分类Dev

如何同时运行两个以上的线程

来自分类Dev

两个线程同时完成并访问相同的方法

来自分类Dev

同时使用两个线程从arraylist中读取

来自分类Dev

两个线程同时执行同步块

来自分类Dev

在Android中同时运行两个不同的线程

来自分类Dev

两个线程同时访问同一ArrayList?

来自分类Dev

同时启动的两个并行请求被依次执行

来自分类Dev

如何确保两个线程访问相同的资源并使它们线程安全?

来自分类Dev

如何使用python启动两个线程?

来自分类Dev

如何使用python启动两个线程?

来自分类Dev

如何并行启动两个pydub线程?

来自分类Dev

在连续语句中启动的两个线程是否同时运行,还是一个接一个地运行?

来自分类Dev

锁定两个方法并确保仅在线程上正在调用一个方法

来自分类Dev

确保在forEach循环的上下文中可以同时更改两个不同的id?

来自分类Dev

如何确保两个客户端不会同时请求破坏状态

来自分类Dev

如何确保两个布尔属性的值永远不应该同时为真?

来自分类Dev

如何同时执行两个方法以确保没有延迟?

来自分类Dev

同时使用两个线程时将一个线程移动到另一个线程

来自分类Dev

如何安装Grub2来同时启动两个Windows 7,以便从两个不同的HDD启动?

来自分类Dev

多线程时如何确保两个语句按顺序运行?

来自分类Dev

一个 HashMap,两个线程 - 在这个例子中我如何确保线程安全?

来自分类Dev

两个“同时”条件?

来自分类Dev

两个线程/任务同时命中同一个函数的机会

来自分类Dev

两个线程可以同时与同一端口上的两个不同的套接字交互吗?

来自分类Dev

在两个不同向量之间交替选择,同时确保每个选择都大于前一个

Related 相关文章

  1. 1

    如何同时启动两个线程(几乎)?

  2. 2

    同时运行两个线程

  3. 3

    Java启动两个线程?

  4. 4

    两个线程同时访问同一ArrayList?

  5. 5

    如何同时运行两个以上的线程

  6. 6

    两个线程同时完成并访问相同的方法

  7. 7

    同时使用两个线程从arraylist中读取

  8. 8

    两个线程同时执行同步块

  9. 9

    在Android中同时运行两个不同的线程

  10. 10

    两个线程同时访问同一ArrayList?

  11. 11

    同时启动的两个并行请求被依次执行

  12. 12

    如何确保两个线程访问相同的资源并使它们线程安全?

  13. 13

    如何使用python启动两个线程?

  14. 14

    如何使用python启动两个线程?

  15. 15

    如何并行启动两个pydub线程?

  16. 16

    在连续语句中启动的两个线程是否同时运行,还是一个接一个地运行?

  17. 17

    锁定两个方法并确保仅在线程上正在调用一个方法

  18. 18

    确保在forEach循环的上下文中可以同时更改两个不同的id?

  19. 19

    如何确保两个客户端不会同时请求破坏状态

  20. 20

    如何确保两个布尔属性的值永远不应该同时为真?

  21. 21

    如何同时执行两个方法以确保没有延迟?

  22. 22

    同时使用两个线程时将一个线程移动到另一个线程

  23. 23

    如何安装Grub2来同时启动两个Windows 7,以便从两个不同的HDD启动?

  24. 24

    多线程时如何确保两个语句按顺序运行?

  25. 25

    一个 HashMap,两个线程 - 在这个例子中我如何确保线程安全?

  26. 26

    两个“同时”条件?

  27. 27

    两个线程/任务同时命中同一个函数的机会

  28. 28

    两个线程可以同时与同一端口上的两个不同的套接字交互吗?

  29. 29

    在两个不同向量之间交替选择,同时确保每个选择都大于前一个

热门标签

归档