【发布时间】:2011-12-13 22:24:56
【问题描述】:
我想用 ppl 的 task_group 类替换普通线程的使用,但我遇到了以下问题:
我有一个带有 task_group 成员的 A 类,
创建 2 个不同的 A 类实例,
在第一个A实例的task_group中启动一个任务(使用run),
几秒钟后,在第二个 A 实例的 task_group 中启动一个任务。
我希望这两个任务并行运行,但第二个任务等待第一个任务完成然后开始。
这仅在我的应用程序中发生,其中任务从静态函数启动。我在测试应用程序中执行了相同的场景,并且任务并行正确运行。
花了几个小时试图弄清楚这一点后,我切换回了正常线程。
有谁知道为什么并发运行时会出现这种行为,或者我该如何避免这种情况?
编辑 问题在于它在单核 CPU 上运行,并发运行时着眼于吞吐量。我想知道微软并行模式库是否具有活动对象的概念,或者在线上的某些东西,以便您可以指定您将要吃午饭的任务将与您启动它的线程并行执行......
【问题讨论】:
标签: c++ windows concurrency