Go語言2個協程交替打印

WaitGroup + 無緩沖channel

  • waitgroup 用來控制2個協程
    • Add() 、Done()、Wait()
  • channel用來實現信號的傳遞和信號的打印
    • ch1: 用來記錄打印的信號
    • ch2:用來實現信號的傳遞,實現2個協程的順序打印
package mainimport ("fmt""sync"
)func main() {var wg sync.WaitGroup // 創建一個 WaitGroup 用于2個 goroutine 執行完成ch1 := make(chan int) // 創建一個無緩沖的整數通道 ch1ch2 := make(chan int) // 創建一個無緩沖的整數通道 ch2wg.Add(2)             // 向 WaitGroup 中添加 2 個需要等待的 goroutine// 啟動第一個 goroutinego func() {defer wg.Done() // 當 goroutine 結束時,調用 Done 通知 WaitGroup 完成// 從 1 開始,每次加 2 向 ch1 發送數據for i := 1; i <= 100; i += 2 {ch1 <- i // 打印發送的奇數fmt.Println("Goroutine 1:", i)<-ch2 // 等待 ch2信號,阻塞}close(ch1) // 關閉 ch1 通道}()// 啟動第二個 goroutinego func() {defer wg.Done() // 當 goroutine 結束時,調用 Done 通知 WaitGroup 完成// 從 ch1 中接收數據for i := range ch1 {// 打印接收的奇數加 1 的結果fmt.Println("Goroutine 2:", i+1)ch2 <- i // 向 ch2 發送數據}close(ch2) // 關閉 ch2 通道}()// 等待兩個 goroutine 完成wg.Wait()
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83847.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83847.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83847.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序 路由跳轉

路由方式 官方參考文檔 wx.switchTab 實現底部導航欄 1.配置信息 app.json"tabBar": {"custom": true,"list": [{"pagePath": "pages/home/index","text": "首頁"},{"pagePath": "p…

[Java 基礎]正則表達式

正則表達式是一種強大的文本模式匹配工具&#xff0c;它使用一種特殊的語法來描述要搜索或操作的字符串模式。在 Java 中&#xff0c;我們可以使用 java.util.regex包提供的類來處理正則表達式。 :::color3 正則表達式不止 Java 語言提供了相應的功能&#xff0c;很多其他語言…

ArcGIS安裝出現1606錯誤解決辦法

問題背景&#xff1a; 由于最近Arcgis10.2打是有些功能不正常退出&#xff0c;比如arctoolbox中的&#xff0c;table to excel 功能&#xff0c;只要一點擊&#xff0c;arcgis就報錯退出&#xff0c;平常在使用過程中&#xff0c;也經常出現一些莫名其妙的崩潰現象&#xff0c…

wpf 解決DataGridTemplateColumn中width綁定失效問題

感謝酪酪烤奶 提供的Solution 文章目錄 感謝酪酪烤奶 提供的Solution使用示例示例代碼分析各類交互流程 WPF DataGrid 列寬綁定機制分析整體架構數據流分析1. ViewModel到Slider的綁定2. ViewModel到DataGrid列的綁定a. 綁定代理(BindingProxy)b. 列寬綁定c. 數據流 關鍵機制詳…

語音轉文本ASR、文本轉語音TTS

ASR Automatic Speech Recognition&#xff0c;語音轉文本。 技術難點&#xff1a; 聲學多樣性 口音、方言、語速、背景噪聲會影響識別準確性&#xff1b;多人對話場景&#xff08;如會議錄音&#xff09;需要區分說話人并分離語音。 語言模型適配 專業術語或網絡新詞需要動…

通用embedding模型和通用reranker模型,觀測調研

調研Qwen3-Embedding和Qwen3-Reranker 現在有一個的問答庫&#xff0c;包括150個QA-pair&#xff0c;用10個query去同時檢索問答庫的300個questionanswer Embedding模型&#xff0c;query-question的匹配分數 普遍高于 query-answer的匹配分數。比如對于10個query&#xff0c…

基于YOLOv8+Deepface的人臉檢測與識別系統

摘要 人臉檢測與識別系統是一個集成了先進計算機視覺技術的應用&#xff0c;通過深度學習模型實現人臉檢測、識別和管理功能。系統采用雙模式架構&#xff1a; ??注冊模式??&#xff1a;檢測新人臉并添加到數據庫??刪除模式??&#xff1a;識別數據庫中的人臉并移除匹…

Grdle版本與Android Gradle Plugin版本, Android Studio對應關系

Grdle版本與Android Gradle Plugin版本&#xff0c; Android Studio對應關系 各個 Android Gradle 插件版本所需的 Gradle 版本&#xff1a; https://developer.android.com/build/releases/gradle-plugin?hlzh-cn Maven上發布的Android Gradle Plugin&#xff08;AGP&#x…

用c語言實現簡易c語言掃雷游戲

void test(void) {int input 0;do{menu();printf("請選擇&#xff1a; >");scanf("%d", &input);switch (input){menu();case 1:printf("掃雷\n");game();break;case 2:printf("退出游戲\n");break;default:printf("輸入…

系統辨識的研究生水平讀書報告期末作業參考

這是一份關于系統辨識的研究生水平讀書報告&#xff0c;內容系統完整、邏輯性強&#xff0c;并深入探討了理論、方法與實際應用。報告字數超過6000字 從理論到實踐&#xff1a;系統辨識的核心思想、方法論與前沿挑戰 摘要 系統辨識作為連接理論模型與客觀世界的橋梁&#xff…

開源、免費、美觀的 Vue 后臺管理系統模板

隨著前端技術的不斷發展&#xff0c;Vue.js 憑借其輕量、高效、易上手的特性&#xff0c;成為國內外開發者最喜愛的前端框架之一。在構建后臺管理系統時&#xff0c;Vue 提供了以下優勢&#xff1a; 響應式數據綁定&#xff1a;讓頁面和數據保持同步&#xff0c;開發效率高。 …

適合 Acrobat DC 文件類型解析

文件類型 (File Type)ProgID (Continuous)ProgID (Classic)主要用途.pdfAcroExch.Document.DCAcroExch.Document.20XX (版本特定)Adobe PDF文檔格式&#xff0c;用于存儲文檔內容和格式.pdfxmlAcroExch.pdfxmlAcroExch.pdfxmlPDF與XML結合的格式&#xff0c;可能用于結構化數據…

C/C++數據結構之漫談

概述 在當今的數字化時代&#xff0c;無論是刷短視頻、社交聊天&#xff0c;還是使用導航軟件、網絡購物&#xff0c;背后都離不開計算機技術的支持。但你是否想過&#xff1a;為什么同樣的功能&#xff0c;有的軟件運行得飛快&#xff0c;有的卻嚴重卡頓&#xff0c;半天沒有響…

4步使用 vue3 路由

路由的基本使用步驟分為以下4步 第一步&#xff1a;定義路由組件&#xff1a;略 第二步&#xff1a;定義路由鏈接和路由視圖&#xff1a; <template><div class"app-container"><h1>App根組件</h1><router-link to"/home">…

VScode使用npm啟動項目以及npm install ,npm start報錯問題處理

安裝啟動步驟 打開cmd 輸入指令 npm -v 查看npm是否安裝&#xff0c;需要先安裝node.js node.js安裝&#xff1a;node.js安裝 安裝包下載后&#xff0c;一直點擊next &#xff0c;安裝完成&#xff0c;打開cmd 輸入 node -v 查看安裝是否成功 使用VScode 打開項目&#xf…

《仿盒馬》app開發技術分享-- 回收金提現記錄查詢(端云一體)

開發準備 上一節我們實現了回收金提現的功能&#xff0c;并且成功展示了當前賬戶的支出列表&#xff0c;但是我們的提現相關的記錄并沒有很好的給用戶做出展示&#xff0c;用戶只知道當前賬戶提現扣款&#xff0c;并不知道回收金的去向&#xff0c;這一節我們就要實現回收金記…

芯片的起點——從硅到晶圓制造

第1篇&#xff1a;芯片的起點——從硅到晶圓制造 在討論汽車芯片如何“上車”之前&#xff0c;我們必須先回到源頭&#xff0c;從一顆芯片是如何從沙子一步步煉成講起。很多人知道芯片很復雜&#xff0c;卻未必清楚它的每一層結構、每一道工藝有何意義。本系列文章將從硅的提純…

vscode python debugger 如何調試老版本python

找到老版本資源&#xff1a; 找到老版本python debugger插件&#xff0c;現在官方github 都是24之后的release 了&#xff0c;調不了3.6 老項目 pdb&#xff1a; 太麻煩 debugpy vscode python debugger 的底層實現&#xff0c;我們可以指定老版本的debugger 來調試&#…

MVCC 怎么實現的

? 什么是 MVCC?它是怎么實現的?(適合基礎不牢固者) 一、MVCC 是什么? MVCC 全稱是:Multi-Version Concurrency Control,中文叫:多版本并發控制。 主要用于解決數據庫的讀寫并發沖突問題,它的作用是讓讀操作無需加鎖,也能讀到符合事務隔離要求的數據版本。 你可以…

深度解析企業風控API技術實踐:構建全方位企業風險畫像系統

引言 在當前的商業環境中&#xff0c;企業風險評估已成為各類商業決策的重要依據。本文將從技術實踐的角度&#xff0c;詳細介紹企業風控API的集成應用&#xff0c;重點關注API的調用方式、數據結構以及風險維度的劃分&#xff0c;幫助開發者快速構建企業風險畫像系統。 關鍵…