.NET多執行緒技術詳解(4) 執行緒優先順序
執行緒優先順序從高到低分為:Highest 、AboveNormal、Normal、BelowNormal、Lowest共5個等級。通過設定Thread類的ThreadPriority屬性(可讀寫屬性)來調整。
範例:
下面的程式碼示例說明了更改執行緒優先順序的結果。建立兩個執行緒,其中一個執行緒的優先順序設定為 BelowNormal。兩個執行緒在 while 迴圈中都增加一個變數,並執行一段設定的時間。
using System;
using System.Threading;
class Test
{
static void Main()
{
PriorityTest priorityTest = new
ThreadStart startDelegate =
new ThreadStart(priorityTest.ThreadMethod);
Thread threadOne = new Thread(startDelegate);
threadOne.Name = "ThreadOne";//通過設定執行緒的name加以區分。
Thread threadTwo = new Thread(startDelegate);
threadTwo.Name = "ThreadTwo";
threadTwo.Priority = ThreadPriority.BelowNormal;
threadOne.Start();
threadTwo.Start();
// Allow counting for 10 seconds.
Thread.Sleep(10000);
priorityTest.LoopSwitch = false;
Console.ReadLine();
}
}
class PriorityTest
{
bool loopSwitch;
public PriorityTest()
{
loopSwitch = true;
}
public bool LoopSwitch
{
set { loopSwitch = value; }
}
public void ThreadMethod()
{
long threadCount = 0;
while (loopSwitch)
{
threadCount++;
}
Console.WriteLine("{0} with {1,11} priority " +
"has a count = {2,13}", Thread.CurrentThread.Name,
Thread.CurrentThread.Priority.ToString(),
threadCount.ToString("N0"));
}
}
執行結果:很明顯,高優先順序的執行緒擁有更多的執行機會。
相關推薦
.NET多執行緒技術詳解(4) 執行緒優先順序
執行緒優先順序從高到低分為:Highest 、AboveNormal、Normal、BelowNormal、Lowest共5個等級。通過設定Thread類的ThreadPriority屬性(可讀寫屬性)來調整。 範例: 下面的程式碼示例說明了更改執行緒優先順序的結果。建立兩
.NET多執行緒技術詳解(2) 建立、終止執行緒
System.Threading 名稱空間提供支援多執行緒程式設計的類和介面,使您可以輕鬆地執行建立和啟動新執行緒,同步多個執行緒,掛起執行緒以及中止執行緒等任務。 Thread類有幾個至關重要的方法,描述如下:Start():啟動執行緒;Sleep(int):靜態方法,
.NET多執行緒技術詳解(1)
預設情況下,C# 程式具有一個執行緒。此執行緒執行程式中以Main方法開始和結束的程式碼。Main直接或間接執行的每一個命令都由預設執行緒(或主執行緒)執行,當Main返回時此執行緒也將終止。不過,可以建立輔助執行緒,以便與主執行緒一起並行執行程式碼。這些執行緒通常稱為“輔
std::thread執行緒庫詳解(4)
## 目錄 - [目錄](#目錄) - [前言](#前言) - [條件變數](#條件變數) - [一些需要注意的地方](#一些需要注意的地方) - [總結](#總結) ## 前言 本文主要介紹了多執行緒中的條件變數,條件變數在多執行緒同步中用的也比較多。我第一次接觸到條件變數的時候是在完成一個多執行
Java 多執行緒詳解(五)------執行緒的宣告週期
這篇部落格介紹執行緒的生命週期。 執行緒是一個動態執行的過程,它也有從建立到死亡的過程。 在 Thread 類中,有一個列舉內部類: 上面的資訊以圖片表示如下: 第一張圖: 第二張圖:把等待、計時等待、阻塞看成阻塞一個狀態了 1、新建狀態(new):使用 new 建立一個
Java併發:執行緒池詳解(ThreadPoolExecutor)
/** * 主池控制狀態ctl是包含兩個概念欄位的原子整數: workerCount:指有效的執行緒數量; * runState:指執行狀態,執行,關閉等。為了將workerCount和runState用1個int來表示, * 我們限制workerCount範圍為(2 ^ 29) - 1,即用int的低
std::thread執行緒庫詳解(2)
## 目錄 - [目錄](#目錄) - [簡介](#簡介) - [最基本的鎖 std::mutex](#最基本的鎖-stdmutex) - [使用](#使用) - [方法和屬性](#方法和屬性) - [遞迴鎖 std::recursive_mutex](#遞迴鎖-stdrecursive_mute
實現高性能糾刪碼引擎 | 糾刪碼技術詳解(下)
糾刪碼引擎 基礎知識 深入優化 技術 工程師 作者介紹: 徐祥曦,七牛雲工程師,獨立開發了多套高性能糾刪碼/再生碼編碼引擎。柳青,華中科技大學博士,研究方向為基於糾刪碼的分布式存儲系統。前言:在上篇《如何選擇糾刪碼編碼引擎》中,我們簡單了解了 Reed-Solomon Codes(RS 碼
MongoDB執行計劃分析詳解(1)
mongo smu pre als comm 計劃 -- {} direct 正文 queryPlanner queryPlanner是現版本explain的默認模式,queryPlanner模式下並不會去真正進行query語句查詢,而是針對query語句進行執行計劃分析並
Jmater (十七) 命令列(非GUI)模式詳解(二) 執行代理設定
閒話少述,接 上文繼續。。。 5、設定代理 jmeter -n -t Jmeter分散式測試示例.jmx -H 20.9.215.90 -P 9999 -1 report\01-result.csv -j report\01-log.log 注意:-H 20.9.215.9
如何開發優秀的HTML5遊戲?-迪斯尼《尋找奧茲之路》遊戲技術詳解(二)
(接上文)桌面遊戲通常創建於一個核心的物理引擎。因此,要在3D世界中模擬一個柔軟的物體,需要一個完整的物理模擬器,並且建立一種可信的行為。 WebGL和JavaScript還不能奢華到可以執行一個完全成熟的物理模擬器。因此,在這個遊戲中我們必須找
如何開發優秀的HTML5遊戲?-迪斯尼《尋找奧茲之路》遊戲技術詳解(一)
前言 迪斯尼《Find Your Way to OZ》這個貼近地氣的遊戲我在最新一期《程式設計師》雜誌的《從HTML5移動應用現狀談發展趨勢》這篇文章裡有所提及,它借用了近期上映的《魔境仙蹤》電影的設定(設定來自於經典故事《綠野仙蹤》,看過這個電
Django技術詳解(一)建立Djangon專案並理解目錄結構
建立專案 1:開啟命令列,進入想要安置專案的目錄 2:命令列輸入:django-admin manage.py startproject myblog;如果沒有報錯,證明專案建立成功 專案目錄介紹 mamage.py:與專案進行互動的命令列工具集
I/O多路複用詳解(三)
在linux的網路程式設計中,很長的一段時間都在使用select來做事件觸發。然而select逐漸暴露出了一些缺陷,使得linux不得不在新的核心中尋找出替代方案,那就是epoll。其實,epoll與select原理類似,只不過,epoll作出了一些重大改進,即: a、當它們所監聽的集合中有狀
C#的反射技術詳解(二)
2。動態新增和使用型別反射提供了由語言編譯器(例如 Microsoft Visual Basic .NET 和 JScript)用來實現隱式晚期繫結的基礎結構。繫結是查詢與唯一指定的型別相對應的宣告(即實現)的過程。由於此過程在執行時而不是在編譯時發生,所以稱作晚期繫結。Vi
Java虛擬機器詳解(二)------執行時記憶體結構
首先通過一張圖瞭解 Java程式的執行流程: 我們編寫好的Java原始碼程式,通過Java編譯器javac編譯成Java虛擬機器識別的class檔案(位元組碼檔案),然後由 JVM 中的類載入器載入編譯生成的位元組碼檔案,載入完畢之後再由 JVM 執行引擎去執行。在載入完畢到執行過程中,J
Mysql加鎖過程詳解(4)-select for update/lock in share mode 對事務並發性影響
per inno targe 允許 evel transacti 修改 not null warn select for update/lock in share mode 對事務並發性影響 事務並發性理解 事務並發性,粗略的理解就是單位時間內能夠執行的事務數量,常見的單
git 使用詳解(4)—— commit -a -m/diff --staged/rm/mv
art client -s 做的 res use 擴展名 ems 也會 查看已暫存和未暫存的更新 實際上 git status的顯示比較簡單,僅僅是 列出了(修改過的、新創建的、已經暫存但未提交的)文件,如果要查看具體修改了什麽地方,可以用git diff 命令。稍後我們會
Java詳解(4)--練習題
一、入門練習 1、必做題 ∆ 計算1000以內的偶數數之和 ∆ 補全下列程式碼執行出結果後,替換continue使用break執行檢視結果 for (int i = 0; i < total; i++) { System.out.print(“請輸入第” + (i + 1) + "
XILINX_zynq_詳解(4)
摘錄一篇關於ZYNQ的一些概念: PS: 處理系統 (Processing System) , 就是與FPGA無關的ARM的SOC的部分。 PL: 可程式設計邏輯 (Progarmmable Logic), 就是FPGA部分。之所以叫PL,而不是叫FPGA,我想,原因主要是