【发布时间】:2016-01-16 02:42:21
【问题描述】:
我的应用程序当前有一个“任务”列表(每个任务都由一个函数组成 - 该函数可以像打印一些东西一样简单,但也可以更复杂),它会循环通过。 (附加说明:大多数任务在执行后会发送一个数据包)由于其中一些任务可能需要相当长的时间,我考虑为每个任务使用不同的异步线程,从而让所有任务同时运行。
这样做是否明智?
一个问题是我不可能事先知道任务的数量,因此可能会导致创建相当多的线程,我在某处读到每种不同的硬件都有其局限性。我计划在树莓派上运行我的应用程序,我认为我总是需要运行 5 到 20 个任务。
此外,一些任务的运行“优先级”低于其他任务。
我应该先运行重要的任务,然后再运行不太重要的任务吗? (这里的问题是,如果所有任务所需的时间总和超过了一些特定的重要任务应该运行的时间,我的应用程序将不再准确)或者在异步线程中实现所有内容?或者只是尝试通过仅在异步线程中使用“数据包发送”来使一切变得更快,从而不必等到数据包实际发送?
【问题讨论】:
-
你看过 OpenMP (openmp.org)
-
@WilliamJones 谢谢,我会读一读。但我认为现在我的问题仍然太理论化,无法选择图书馆:首先我需要知道我想做的事情是否可行,或者是否有更好的方法。
标签: c++ multithreading networking asynchronous task