1. 程式人生 > >.NET多執行緒技術詳解(4) 執行緒優先順序

.NET多執行緒技術詳解(4) 執行緒優先順序

執行緒優先順序從高到低分為:Highest AboveNormalNormalBelowNormalLowest5個等級。通過設定Thread類的ThreadPriority屬性(可讀寫屬性)來調整。

範例:

下面的程式碼示例說明了更改執行緒優先順序的結果。建立兩個執行緒,其中一個執行緒的優先順序設定為 BelowNormal。兩個執行緒在 while 迴圈中都增加一個變數,並執行一段設定的時間。

using System;

using System.Threading;

class Test

{

static void Main()

{

PriorityTest priorityTest = new

PriorityTest();

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 命令。稍後我們會

Java4--練習題

一、入門練習 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,我想,原因主要是