【发布时间】:2011-02-25 19:47:48
【问题描述】:
我有一个生产者-消费者多线程项目拉动 100 万行并循环遍历每一行。每次迭代都调用workflow-invoker的invoke方法。因为它是一种小调用,也想成为同步调用,所以当我在 Visual Studio 2010 中运行它时,它不使用 CPU 峰值(我预计为 80/90%)但是,只要我在没有 Visual Studio 的情况下运行它,即从控制台运行 exe 文件,它工作正常并达到峰值。 只是为了附加信息,WorkflowInvoker 和 CustomWorkflow 为每个线程实例化,以便它们都可以拥有共享资源的副本。当每次迭代发生时,它会重置输入值,然后调用工作流。
while (true)
{
row = _buffer.Receive();
input["arg1"] = arg1;
input["arg2"] = arg2;
output = resource.WorkflowInvoker.Invoke(input);
}
我的问题是为什么在 Visual Studio 中运行它时执行没有达到峰值,而不是直接使用 .exe 文件从控制台运行它。
谢谢, 莫伊兹
【问题讨论】:
标签: multithreading c#-4.0 workflow-foundation-4