繁体   English   中英

线程池理解问题

[英]Thread pool understanding problem

我试图找出一种方法来对齐线程池中的任务。 我有4个(并行)线程,在(每个线程执行步骤的开始)有10个任务。 我的第一个尝试是测量每个任务的时间,然后根据该时间找到线程中任务的最佳组合,以获得最佳结果。 我试图根据本文http://software.intel.com/zh-CN/articles/designing-the-framework-of-a-parallel-game-engine/编写一个并行游戏引擎

问题是我的“解决方案”不起作用。 还有其他对齐任务的方法吗?

(该项目使用c ++)

要在并行线程中对齐任务,请使用信号量,事件,互斥量。 不要测量任务花费的时间。 线程最多随机执行。 如果您在并行线程中执行4个任务,则前两个任务甚至可能在第二个任务开始之前完成。 这是正确的做法

void Thread1()
{
    task1();
    semaphore1.Release()
}

void Thread2()
{
    task2();
    semaphore1.WaitOne();
    task3();
}

这样,task3将始终在task1完成后执行

您应该从intels视觉计算站点上检查一下Smoke(他们的多线程处理技术演示引擎)和nullstien,它们都可以处理线程池任务(nullstien有两个变体,一个是基于tbb的调度程序,另一个是定制构建的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM