首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

淺談 .NET 多線程與並行計算(二):線程基本知識

     編輯:關於ASP.NET

建立線程與核心屬性

Console.WriteLine(Process.GetCurrentProcess().Threads.Count); // 啟動初期 3 線程
Thread t1 = new Thread(() =>
{
    Thread.Sleep(1000);
    Thread t = Thread.CurrentThread;
    Console.WriteLine("Name: " + t.Name);
    Console.WriteLine("ManagedThreadId: " + t.ManagedThreadId);
    Console.WriteLine("State: " + t.ThreadState);
    Console.WriteLine("Priority: " + t.Priority);
    Console.WriteLine("IsBackground: " + t.IsBackground);
    Console.WriteLine("IsThreadPoolThread: " + t.IsThreadPoolThread);
})
{
    Name = "Thread1",
    Priority = ThreadPriority.Highest
};
t1.Start();
Console.WriteLine(Process.GetCurrentProcess().Threads.Count); // 新增後 4 線程

輸出線程屬性值

關鍵點

  1. 進程啟動預設 3 線程,新建後變 4;Sleep(1000) 防主線程過早結束。
  2. Name 便於除錯;Priority 影響排程。
  3. ManagedThreadId 為 CLR 獨一識別碼,微軟建議用此而非 OS 線程 ID。
  4. IsBackground=false(預設前台線程),進程會等所有前台線程結束才退出;背景線程則隨前台線程結束自動終止。WinForm 若誤用前台線程,關閉視窗後進程可能殘留。
  5. IsThreadPoolThread=false 表示非線程池建立。

傳遞參數:ParameterizedThreadStart

new Thread((date) => Console.WriteLine(((DateTime)date).ToString())).Start(DateTime.Now);

使用接受 object 參數的委簽名,啟動時傳入資料。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved