亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據服務器負載為異步線程啟動添加延遲

根據服務器負載為異步線程啟動添加延遲

C#
素胚勾勒不出你 2021-08-07 18:00:25
我有一個查詢本地數據庫并將其發布到 web api 的任務。目前,它需要所有行,將它們分成 500 個塊,然后使用異步線程設置同時發布它們。我有另一份工作,偶爾會從服務器獲取數據,我在想,如果我返回服務器負載并將其存儲在Config.ServerLoad. 這是我用來設置線程的代碼:var json = JsonConvert.SerializeObject(rowDto);var threads = new Thread(new ParameterizedThreadStart(MultiThreadPostThead));var thisThread = new PostParams() { postUrl = postUrl, json = json, callingThread = threads };threads.Start(thisThread);threads.IsBackground = true;ThreadHandles.Add(thisThread);我希望添加這樣的東西:thread.delay(Config.ServerLoad * 1000);例如,如果服務器負載為 0.5,線程之間幾乎沒有延遲,但如果它是 10,它將在帖子之間等待 10 秒。我看到了一些關于 a 的信息Task.Delay(),但沒有看到任何關于線程的信息。我錯過了什么有助于增加動態值延遲或設置最大并發線程數的東西?
查看完整描述

2 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

如果您想延遲新線程的啟動,那么您可以執行以下操作


PerformanceCounter cpuCounter;

cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");


var thisThread = new PostParams() { postUrl = postUrl, json = json, callingThread = threads };

Thread.Sleep((int)(cpuCounter.NextValue() * 1000));

threads.Start(thisThread);

你可以做的另一件事是使用


threads.Sleep((int)(cpuCounter.NextValue() * 1000));

因為它是一個線程,所以應該有可用的方法


這應該獲取當前的 Cpu 使用情況,然后在啟動新線程之前讓當前線程休眠一段時間 - 如果您已經在配置中存儲了一個數字,那么您可以放棄執行上下文內容并將其替換為您擁有的值: )


查看完整回答
反對 回復 2021-08-07
  • 2 回答
  • 0 關注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號