91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#多線程中的互斥鎖Mutex怎么用

發布時間:2022-04-20 10:36:19 來源:億速云 閱讀:192 作者:iii 欄目:開發技術

本篇內容主要講解“C#多線程中的互斥鎖Mutex怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C#多線程中的互斥鎖Mutex怎么用”吧!

一、簡介

Mutex的突出特點是可以跨應用程序域邊界對資源進行獨占訪問,即可以用于同步不同進程中的線程,這種功能當然這是以犧牲更多的系統資源為代價的。

主要常用的兩個方法:

  • public virtual bool WaitOne() 阻止當前線程,直到當前 System.Threading.WaitHandle 收到信號獲取互斥鎖。

  • public void ReleaseMutex() 釋放 System.Threading.Mutex 一次。

二、代碼

案例一:

    class Program
    {
        private static Mutex mutex = new Mutex();
        static void Main(string[] args)
        {
            Thread[] thread = new Thread[3];
            for (int i = 0; i < 3; i++)
            {
                thread[i] = new Thread(ThreadMethod1);//方法引用
                thread[i].Name = "Thread-" + (i+1).ToString();
            }
            for (int i = 0; i < 3; i++)
            {
                thread[i].Start();
            }
            Console.ReadKey();
        }
        public static void ThreadMethod1(object val)
        {           
            mutex.WaitOne();    //獲取鎖
            for (int i = 1; i <=5; i++)
            {
                Console.WriteLine("{0}循環了{1}次", Thread.CurrentThread.Name, i);
            }
            mutex.ReleaseMutex();  //釋放鎖
        }
    }

運行結果:

C#多線程中的互斥鎖Mutex怎么用

案例二:

    class Program
    {
        private static Mutex mutex = new Mutex();
        private static int sum = 0;
        static void Main(string[] args)
        {
            Task<int> task = new Task<int>(ThreadFunction);
            task.Start();
            Console.WriteLine($"{DateTime.Now} task started!");
            Thread.Sleep(2000);//Main主線程

            Console.WriteLine($"{DateTime.Now} Get siginal in Main!");
            mutex.WaitOne();
            Console.WriteLine($"{DateTime.Now} Get siginal in main!");

            Console.WriteLine($"{DateTime.Now} Result is {task.Result}");
            Console.ReadKey();
        }
        private static int ThreadFunction()
        {
            Console.WriteLine($"{DateTime.Now} Get siginal in ThreadFunction!");
            mutex.WaitOne();  //獲取鎖
            for (int i = 0; i <= 10; i++)
            {
                sum += i;
                Thread.Sleep(1000);
            }
            Console.WriteLine($"{DateTime.Now} Release mutex in ThreadFunction!");
            mutex.ReleaseMutex();  //釋放鎖

            return sum;
        }
    }

運行結果:

C#多線程中的互斥鎖Mutex怎么用

到此,相信大家對“C#多線程中的互斥鎖Mutex怎么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛川县| 北碚区| 嵊泗县| 吴川市| 加查县| 富阳市| 乌什县| 万盛区| 福贡县| 河东区| 贡嘎县| 新晃| 通州市| 拉萨市| 延寿县| 海阳市| 尉犁县| 峨山| 长宁区| 凤阳县| 辽中县| 阳高县| 兴和县| 锦州市| 巴林左旗| 廊坊市| 商洛市| 镇雄县| 砚山县| 安吉县| 上栗县| 公主岭市| 昔阳县| 焦作市| 黄骅市| 凤山市| 达日县| 南乐县| 彰化市| 淮滨县| 泸定县|