如何在Orchard Modules中实现多线程?
How to implement multi threading in Orchard Modules?
这是关于 Orchard 中多线程的常见问题。
我有一个带有控制器的模块,它提供了执行数据库同步的操作,这需要很长时间。该操作基本上对数百个项目执行 for 循环,而每个项目都可以独立处理/同步。
在研究如何提高性能时,我遇到了几种可能的解决方案
async
/ await
关键字
- 并行for循环
Orchard.Environment.Work<>
Orchard.Caching.IParallelCacheContext
Orchard.Caching.ITask
async
控制器操作(也结合 return 值 Task<>
)
还有很多。
在不绕过 Orchard 中已经实施/提供的可能优化的情况下提高 for 循环性能的最佳方法是什么?
async
/ await
/ Task<>
在这里得到了很好的解释
并行 for 循环可能有效,但需要某种同步(例如使用 lock
关键字)
Orchard.Caching.*
不是用于实现多线程的东西,因为命名空间已经暗示了
Work<>
用于惰性依赖注入,参见
这是关于 Orchard 中多线程的常见问题。
我有一个带有控制器的模块,它提供了执行数据库同步的操作,这需要很长时间。该操作基本上对数百个项目执行 for 循环,而每个项目都可以独立处理/同步。
在研究如何提高性能时,我遇到了几种可能的解决方案
async
/await
关键字- 并行for循环
Orchard.Environment.Work<>
Orchard.Caching.IParallelCacheContext
Orchard.Caching.ITask
async
控制器操作(也结合 return 值Task<>
)
还有很多。
在不绕过 Orchard 中已经实施/提供的可能优化的情况下提高 for 循环性能的最佳方法是什么?
async
/await
/Task<>
在这里得到了很好的解释并行 for 循环可能有效,但需要某种同步(例如使用
lock
关键字)Orchard.Caching.*
不是用于实现多线程的东西,因为命名空间已经暗示了Work<>
用于惰性依赖注入,参见