我要实现的是等待新创建的线程,直到cpu处于N%负载之下。
问题是我无法测量cpu和内存使用情况,因为System.Diagnostics.PerformanceCounter
在.NET Core中不起作用。
就性能而言,不知道暂停线程是否明智。
我找到了以下代码:
var proc = Process.GetCurrentProcess();
var mem = proc.WorkingSet64;
var cpu = proc.TotalProcessorTime;
Console.WriteLine("My process used working set {0:n3} K of working set and CPU {1:n} msec", mem / 1024.0, cpu.TotalMilliseconds);
foreach (var aProc in Process.GetProcesses())
Console.WriteLine("Proc {0,30} CPU {1,-20:n} msec", aProc.ProcessName, cpu.TotalMilliseconds);
但不了解如何衡量cpu / ram的使用以及如何帮助我在%/MB
中获得它的使用
答案 0 :(得分:3)
对不起,不能。好吧,您可以循环并每秒检查CPU利用率一次,然后等待,但是很严重,这浪费了线程。
您可以做的是建立一个低优先级的线程。
答案 1 :(得分:-1)
这是我正常的“速率限制”代码:
bool continue = true;
int rate = 1;
dateTime dueTime = dateTime.Now.AddMilliSeconds(rate);
while(continue){
if(dateTime.Now >= dueTime){
//do your thing.
dueTime = DateTime.Now.AddMilliSeconds(rate);
}
else {
Thread.Sleep(1);
}
}
请注意,我必须从内存中写入它,因此我的语法可能已关闭。