小编Nat*_*ace的帖子

ThreadPool回调紧密循环 - 100%CPU

我的算法中有一个方法,它在非常大的数据集上运行非常紧密的循环.我最初写它是单线程,这很好,但它花了很长时间.我现在想要加速它,所以我现在使用ThreadPool来并行化工作.问题是这导致我的CPU使用率达到95-100%,这是我所期望的.但是,我的表现有了很大的提升,但我认为如果我可以减少所有的上下文切换,我可以做得更好.这也导致我的其他程序有点滞后,因为它们必须与线程争夺CPU资源.

我的问题是我应该怎么做呢?我唯一能想到的是限制一次运行的线程数,但这可能会使我的算法变慢,因为一次只能运行几个线程.我不想在我的线程中添加睡眠,因为我只需要算法尽快运行完成.

编辑:有几个人提到使用TPL.我认为这是一个好主意,但不幸的是我忘了提到我使用.NET 3.5,因为父应用程序尚未发布使用.NET 4的版本.

c# cpu threadpool

5
推荐指数
1
解决办法
1667
查看次数

在一个按钮上协调多个IObservable

我有一个在播放/暂停之间交替的按钮.我想看看是否有一个使用反应式扩展的好解决方案,而不是翻转布尔值.这是对我的想法的粗略估计.

var whenPlayClicked = Observable.FromEventPattern<EventArgs>(_playPauseButton, "Click")
    .Take(1)
    .Skip(1)
    .Repeat();

var whenPauseclicked = Observable.FromEventPattern<EventArgs>(_playPauseButton, "Click")
    .Skip(1)
    .Take(1)
    .Repeat();
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

2
推荐指数
1
解决办法
69
查看次数

标签 统计

c# ×2

cpu ×1

system.reactive ×1

threadpool ×1