对于QueueUserWorkItem()的调用,我的探查器中出现间歇性尖峰。我每秒排队大约20个工作岗位。每项工作在复杂性方面大致相同。在调用QueueUserWorkItem时,95%的作业花费不到0.01ms。但每隔几秒钟,似乎是随机的,一份工作需要20-60毫秒!
我正在尝试构建一个平滑的模拟,只是排队我的后台任务会导致我的帧速率出现严重问题。
这不是工作实际完成所需的时间,这是花在简单地排除工作上的时间。我所期待的应该几乎没有时间,所以这非常令人沮丧。
foreach ( Job j in jobs_to_process )
{
Job current_job = j;
if ( !current_job.queued )
{
current_job.queued = true;
Profiler.BeginSample("QueueWorkItem");
ThreadPool.UnsafeQueueUserWorkItem( current_job.DoCalculation, null );
Profiler.EndSample();
}
}
//now I remove queued items from jobs_to_process, move them to jobs_in_progress list
我尝试过的事情:
答案 0 :(得分:1)
运行单声道时尝试使用--server
标志(仅与单声道主控兼容,因为它最近已提交)。