AI有一个WF4应用程序,它包含一个序列工作流,其中包含一个包含三个顺序活动的序列的ParallelFor。第一个活动是计算绑定(它生成证书签名请求),第二个是IO绑定(发送电子邮件),第三个任务也是IO绑定(更新数据库)。
我最初把这些都开发为CodeActivities,并且看到它们需要是AsyncCodeActivities才能在多线程模式下真正运行。因此,我已经将第一个计算绑定活动修改为一个AsyncCodeActivity,并且我可以看到它正在被多线程执行。(至少我可以在我的开发机器上观察到更高的处理器利用率,这使我不相信它现在正在运行多线程)。
然而,后续的任务仍然是非异步CodeActivities。我的问题如下:
发布于 2011-02-24 10:28:18
与所有的儿童活动并行,他们是在同一时间安排。这意味着放入队列,调度程序将在同一时间只执行一个队列。对于异步活动,这意味着开始被调度,它可以生成其他线程,结束部分在完成时被调度,并在调度程序正常运行时真正执行。
实际上,这意味着对于在服务器上执行大量其他工作的工作流,异步活动最好用于异步IO (如网络或数据库IO )。在服务器上,向已经繁忙的系统中添加多个CPU线程甚至会减慢速度。如果工作流在客户机上执行,异步IO和CPU的工作都是有意义的。
https://stackoverflow.com/questions/5103276
复制相似问题