日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

了解C#中 Mutex 的基礎用法

admin
2024年11月3日 21:16 本文熱度 1501

前言

在并發(fā)編程中,確保共享資源的同步訪問對防止數(shù)據(jù)損壞和保持數(shù)據(jù)一致性至關重要。互斥鎖Mutex)是一種用于同步線程訪問共享資源的機制?;コ怄i確保共享資源在同一時間點,只有一個線程可以訪問,從而防止資源競爭與沖突。本文了解C#中Mutex實現(xiàn)互斥體的功能。

Mutex

Mutex 是一種同步的原語,在實現(xiàn)線程共享資源同步訪問,防止數(shù)據(jù)損壞和保持數(shù)據(jù)一致性方面起著至關重要的作用。

1、關鍵概念

擁有權:在任何給定時間內,只有一個線程可以擁有互斥鎖。擁有互斥鎖的線程,負責在使用受保護資源完成后釋放互斥鎖。

互斥狀態(tài):互斥鎖有二種狀態(tài),分別是處于有信號 (解鎖) 或非有信號 (鎖定) 狀態(tài)。嘗試獲取鎖定互斥鎖的線程將被阻止,直到它可用。

2、基本用法

Mutex 的基本操作包括創(chuàng)建、獲取、釋放幾個基本操作。

2.1、創(chuàng)建互斥鎖(Mutex)

在 C# 中,可以使用 System.Threading 命名空間的 Mutex 類創(chuàng)建 Mutex 對象。

// 創(chuàng)建一個具默認屬性的Mutex 實例 【未命名且初始所有權未獲取】Mutex mutex = new Mutex();
// 創(chuàng)建一個命名為GlobalMutexName,但初始所有權未獲取的 Mutex實例Mutex mutex = new Mutex(false, "Global_MutexName");
2.2、獲取互斥鎖(Mutex)

通過使用類提供的 WaitOne 方法獲取互斥鎖。

// 獲取 Mutexmutex.WaitOne();try{    // 訪問共享資源}finally{    mutex.ReleaseMutex();}
2.3、釋放互斥鎖(Mutex)

通過使用類提供的 ReleaseMutex 方法釋放互斥鎖。

// 獲取Mutexmutex.WaitOne();try{    // 訪問共享資源}finally{    //釋放    mutex.ReleaseMutex();}

2.4、為互斥鎖命名

在創(chuàng)建 Mutex 時可以指定互斥鎖名稱,通過互斥鎖名稱可以在不同的進程之間共享同一個 Mutex 實例。在跨進程同步的應用場景中互斥鎖名稱非常有用。

bool createdMutex;using (Mutex mutex = new Mutex(false, "Global_MutexName", out createdNew)){    if (!createdMutex)    {        Console.WriteLine("Mutex 已存在,可能已有另一個實例在運行。");    }    // 請求獲取 Mutex    mutex.WaitOne();    try    {        // 訪問共享資源    }    finally    {        // 釋放 Mutex        mutex.ReleaseMutex();    }}

參考命名

建議使用 Global_ 前綴表示全局Local_ 前綴表示當前,通過命名前綴以明確 Mutex 的作用范圍。

2.5、使用具有超時的互斥鎖(Mutex)

我們可以在嘗試獲取互斥鎖時指定超時,以避免無限期阻塞。
if (mutex.WaitOne(TimeSpan.FromSeconds(8))){    try    {        // 訪問共享資源    }    finally    {        mutex.ReleaseMutex();    }}else{    // 處理超時情況}

3、注意事項

確保 Mutex 對象釋放:可使用 try...finally 語句塊在訪問結束后確保釋放 Mutex,避免死鎖;

避免長時間持有 Mutex:盡量縮短持有 Mutex 的時間,減少線程等待時間,提高性能;

做好異常處理:由于在獲取或釋放 Mutex 時可能會拋出異常,所以需做好異常處理;

避免互斥鎖名稱重復:互斥鎖名命名時,應確保其唯一性,避免與其他應用程序的 Mutex 沖突;

示例

1、在多線程應用程序中寫入文件

namespace Fountain.WinConsole.MutexDemo{    internal class Program    {        private static Mutex fileMutex = new Mutex();        /// <summary>        /// 程序入口        /// </summary>        /// <param name="args"></param>        static void Main(string[] args)        {            // 啟動多個線程            for (int i = 0; i < 5; i++)            {
               Thread thread = new Thread(new ParameterizedThreadStart(WriteToFile));                thread.Name = $"線程-{i + 1}";                thread.Start("寫入文件的內容");            }            Console.ReadKey();        }        /// <summary>        /// 寫入文件        /// </summary>        /// <param name="writeContent"></param>        public static void WriteToFile(object writeContent)        {            // 獲取互斥鎖時指定超時            if (fileMutex.WaitOne(TimeSpan.FromSeconds(8)))            {                try                {                    Console.WriteLine($"{Thread.CurrentThread.Name} 獲得 Mutex。正在訪問共享資源...");                    Thread.Sleep(400);                    Console.WriteLine($"{Thread.CurrentThread.Name} 訪問完畢。");                }                finally                {                    fileMutex.ReleaseMutex();                    Console.WriteLine($"{Thread.CurrentThread.Name} 釋放了 Mutex。");                }            }            else            {                Console.WriteLine($"{Thread.CurrentThread.Name} 處理超時情況。");            }        }    }}

小結

Mutex 可以有效避免同步線程數(shù)據(jù)競爭和資源沖突,提高應用程序的穩(wěn)定性和可靠性。通過了解 Mutex,并通過正確使用Mutex,才能有效地管理并發(fā)訪問,確保程序的正確性和穩(wěn)定性。希望本文能給您帶來幫助,如有不到之處,請多多包涵。


該文章在 2024/11/4 10:28:01 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結合碼頭的業(yè)務特點,圍繞調度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

欧美另类色网站在线| 日韩 有码 在线观看| 亚洲欧美精品伦理在线观看| 亚洲香蕉av在线一区二区三区| 人妻在线激情| 久久久久久伦理电影| 激情五月婷婷欧美在线| 淫荡巨乳骚逼被大鸡巴操| 成年人黄色网址| 五月天黄色精品影院| 视频在线5区| 国产无产告AV| 中文字幕一区二区三区免费在线| 久久99精品久久久久久黑人| 亚洲欧美国产老师淫荡一区二区| 欧美激情 免费一区二区视频| 国产麻豆女生操逼| αV另类| 一区二区在网| 麻豆一区二区hh| 成人黄色sp| 国产精品无毛白浆| 美女嫩穴破处喷水91AV| 亚洲一区成年人黄色电影| 午夜蜜桃在线| 15久久免费毛片| 午夜亚洲影院人妖| 美女视频黄久久| 久久91日韩一区| 黄色国产av午夜| 好看的无码视频| 亚洲精品集合| 久久曰久久三级片| 久久人人爽人人爽人人叫| 日本少妇性内射| 久久久久久aⅴ| 欧美日韩国产金品一区二区| 大鸡巴操逼在线观看| 日韩第一无码专区| 囯产一区二区久久久| 亚洲天堂成人久久一区|