信號量的使用 ManualResetEvent

来源:https://www.cnblogs.com/wangSOA/archive/2018/09/07/9607419.html
-Advertisement-
Play Games

線程的等待時可以用這個,不論是線程池還是線程都可以用這個做等待。 當然也可以用迴圈待等的執行的方式進行線程待等 ...


線程的等待時可以用這個,不論是線程池還是線程都可以用這個做等待。


ManualResetEvent md=new ManualResetEvent(false);//這個false 設置線程等待, true 允許線程不待等
IAsyncResult result= new Action<string>((t) =>
            {
                Console.WriteLine(t);
                mre.Set();//允許線程不用繼續等待,可以執行下去
            }).BeginInvoke("你好",null,null);
            mre.WaitOne();//主線程被卡在這裡,等待信號量變成true(mre.Set()這個方法後就可變為true不用等待)
            Console.WriteLine("你吃飯了麽!");
            mre.Reset();//重新設為線程等待

            IAsyncResult result01= new Action<string>((t) =>
            {
                Console.WriteLine(t);
                mre.Set();//設置線程不用繼續等待,可以執行下去
            }).BeginInvoke("還沒吃",null,null);
            mre.WaitOne();//又被阻塞了
            Console.WriteLine("一起吃飯吧!");
//輸出結果
你好
你吃飯了麽!
還沒吃
一起吃飯吧!

//線程池中的使用
 mre.Reset();
            ThreadPool.QueueUserWorkItem((t) =>
            {
                Console.WriteLine("我是從線程池中走出的線程!");
                mre.Set();
            });
            mre.WaitOne();

當然也可以用迴圈待等的執行的方式進行線程待等

 while (!result.IsCompleted)
            {
                Thread.Sleep(500);
                Console.WriteLine("我在等你回覆!");
                
            }
  Console.WriteLine("我吃了!");

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 列表中的每個元素在記憶體中都是相互獨立的,有自己的唯一標識符,可以通過 id() 函數來查看元素在記憶體中的唯一標識符。 淺深copy在列表數據量比較大的情況下,不建議使用,比較消耗記憶體資源。 淺深copy就是在記憶體中把一個列表複製一份,占用了兩份記憶體空間: 淺copy 元素值未修改前 names ...
  • ThreadLocal類用於創建一個線程本地變數 在Thread中有一個成員變數ThreadLocals,該變數的類型是ThreadLocalMap,也就是一個Map,它的鍵是threadLocal,值為就是變數的副本。通過ThreadLocal的get()方法可以獲取該線程變數的本地副本,在get ...
  • (1)普通的內容爬取(2)保存爬取的圖片/視頻和文件和網頁(3)普通模擬登錄(4)處理驗證碼登錄(5)爬取js網站(6)全網爬蟲(7)某個網站的站內所有目錄爬蟲(8)多線程 (9)爬蟲框架Scrapy 一,普通的內容爬取 二,保存爬取的圖片/視頻和文件和網頁#圖片/視頻和文件和網頁的地址抓取下來後, ...
  • 問題:有n只猴子順序編號,從第一隻猴子開始報數,凡是報道m的猴子退出,最終剩下的一隻猴子及當選為猴王 輸入:n、m 輸出:猴王編號 第一種方法:用數組實現:(較為簡單省略步驟) 第二種方法:用迴圈單鏈表實現: 第一步:創建一個迴圈單鏈表,註意釋放頭結點的空間,每個結點包括編號和指針域 第二步:從首結 ...
  • 安裝 目前很多項目都需要用到composer管理,這裡主要介紹一下在Windows下如何安裝composer。 首先下載Composer-Setup.exe,下載地址:https://getcomposer.org/download/。 點擊安裝,這裡註意一點,選擇developer mode可以自 ...
  • 效果展示: 此模板主要用於多線程套圖下載,不過一般大眾爬蟲不用破譯的都可以改改使用,附件有個美圖錄的例子。 每個用途 每個網址 細節都會有差異 所有帶(*)的都屬於DIY範疇,需要一些基本的html知識,請靈活使用。 添加了斷點續傳功能,文件夾名稱改為套圖地址; 每一句Python源代碼後面都有詳細 ...
  • 文章目錄: 事物的理解 壹、什麼是事物?事物的 ACID(Atomicity 、Consistency 、Durability、Isolation )? 貳、臟讀、不可重覆讀、幻讀? 叄、事物的隔離級別? 深入理解 Spring 事務原理 壹、事務的基本原理 貳、Spring 事務的傳播屬性 叄、數 ...
  • 判斷語句主要有if...else、switch和 條件?語句1:語句2 三種,而if...else中又有if語句,if...else、if...else if...else和if中嵌套if這幾種,但是只要掌握if...else if...else語句其他if類型語句的用法都是相似的 if...els ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...