我正在使用C#为一种叫做Heron的小型编程语言编写解释器,它具有一些可以并行执行的基本列表操作。
我面临的最大挑战之一就是在遇到可并行化操作时,有效地将评估器完成的工作分配到不同的核心上。这可能是一个短操作或长操作,很难事先确定。
我不必担心的一件事是数据同步:并行操作明确禁止修改数据。
所以我最主要的问题是:
- What is the most effective way to distribute the work across threads, so that I can guarantee that the computer will distribute the work across two cores?
我也对一个相关的问题感兴趣:
- Roughly how long should an operation take before we can start overcoming the overhead of separating the work onto another thread?