Go的并发练习题目

经典并发题目

现在有4个协程,分别对应编号为1,2,3,4,每秒钟就有一个协程打印自己的编号,要求编写一个程序,让输出的编号总是按照1,2,3,4,1,2,3,4这样的规律一直打印下去

type Token struct {
}func newWorker(id int, ch chan Token, nextCh chan Token) {for {token := <-chfmt.Println(id + 1)time.Sleep(time.Second)nextCh <- token}
}func testGoroutine() {chs := []chan Token{make(chan Token), make(chan Token), make(chan Token), make(chan Token)}for i := 0; i < 4; i++ {go newWorker(i, chs[i], chs[(i+1)%4])}chs[0] <- struct{}{}select {}
}

信号通知题目

使用chan来实现程序的graceful shutdown,在程序退出之前来执行一些连接的关闭,文件的close相关操作。

func testClosed() {var closing = make(chan struct{})var closed = make(chan struct{})go func() {for {select {case <-closing:returndefault:time.Sleep(100 * time.Millisecond)}}}()termChan := make(chan os.Signal)signal.Notify(termChan, syscall.SIGINT, syscall.SIGTERM)<-termChanclose(closing)go doCleanUp(closed)select {case <-closed:case <-time.After(time.Second):fmt.Println("clean timeout")}fmt.Println("gracefully exit")
}func doCleanUp(closed chan struct{}) {time.Sleep(time.Minute)close(closed)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633617.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多线程排序(java版)

&#x1f4d1;前言 本文主要是【排序】——多线程排序的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#x…

Docker-02-镜像项目部署

Docker-02-镜像&项目部署 文章目录 Docker-02-镜像&项目部署一、镜像①&#xff1a;镜像结构②&#xff1a;Dockerfile③&#xff1a;构建镜像01&#xff1a;构建02&#xff1a;查看镜像列表03&#xff1a;运行镜像 二、网络①&#xff1a;容器的网络IP地址②&#xff…

数据中心负载测试的常用工具和技术有哪些?

数据中心负载测试是评估系统在高负载下的性能和稳定性的重要手段。通过模拟大量用户并发访问&#xff0c;可以检测系统的瓶颈和潜在问题&#xff0c;为优化系统性能提供依据。以下是一些常用的数据中心负载测试工具和技术&#xff1a; Apache JMeter&#xff1a;JMeter是一个开…

《世界之外》提前开测,网易打响国乙大战

1月18日&#xff0c;国乙市场迎来了一场大战。 原定于1月26日开服的网易新乙游《世界之外》&#xff0c;突然宣布在1月18日进行不删档、不限量测试&#xff0c;从某种意义上来说&#xff0c;其实就等同于提前公测。 而同一天开服的还有叠纸的全新3D乙游《恋与深空》&#xff…

高通平台--使用错误密码连接AP后,出现CTRL-EVENT-ASSOC-REJECT后,无法cancle,导致UI界面看到一直connecting

问题现象: 在使用错误密码连接热点后,发现一直connecting,手机无法自动cancle,弹出密码错误提示框 Log分析: 发现一直频繁打印如下的log,这也就是无法cancle的原因 行 4337: 01-17 09:57:10.980 1906 1906 D wpa_supplicant: wlan0: Event ASSOC_REJECT (12) receiv…

基于R语言的NDVI的Sen-MK趋势检验

本实验拟分析艾比湖地区2010年至2020年间的NDVI数据&#xff0c;数据从MODIS遥感影像中提取的NDVI值&#xff0c;在GEE遥感云平台上将影像数据下载下来。代码如下&#xff1a; import ee import geemap geemap.set_proxy(port7890)# 设置全局网络代理 Map geemap.Map()# 指定…

2024年宜昌市中级职称评定条件能力业绩要求是什么?

1.参与完成 4 项中型以上工程建筑项目的勘察、设计&#xff0c;并通过审查 2.参与完成标准&#xff08;含国家标准、行业标准、地方标准、团体、标准&#xff09;、省级标准设计&#xff0c;参与工法、管理办法、规定、规程细则的编写&#xff0c;并正式发布实施 3.参与完成新技…

Gradle小知识点

subprojects 和 allprojects 的区别&#xff0c; 先给出结论&#xff1a; allprojects是对所有project的配置&#xff0c;包括Root Project&#xff1b; 而subprojects是对所有Child Project的配置。 新建一个test_gradle的文件夹&#xff0c;在文件夹里新建build.gradle和…

文件上传时报413错误

原因&#xff1a;nginx上传文件大小有限制&#xff0c;如果不配置nginx上传文件大小&#xff0c;则上传时会出现 413 (Request Entity Too Large) 异常&#xff08;请求实体过大&#xff09; 解决方案&#xff1a;1、打开nginx主配置文件nginx.conf&#xff0c;找到http{ }&…

go语言(三)----函数

1、函数单变量返回 package mainimport "fmt"func fool(a string,b int) int {fmt.Println("a ",a)fmt.Println("b ",b)c : 100return c}func main() {c : fool("abc",555)fmt.Println("c ",c)}2、函数多变量返回 pack…

PCA富集方法及聚类方法的生物学差异(自备)

对于解析肿瘤中的通路富集情况&#xff0c;我们可以使用PCA方法和聚类方法来评估基因表达谱。下面是对这两种方法的解释以及它们在生物学上的意义。 1. PCA方法&#xff1a; PCA&#xff08;Principal Component Analysis&#xff0c;主成分分析&#xff09;是一种降维技术&…

Shopee商品接口协议

Shopee是一家在线购物平台&#xff0c;提供多种商品的购买和销售服务。它成立于2015年&#xff0c;总部位于新加坡&#xff0c;目前已在东南亚地区和台湾等地开展业务。Shopee主要提供电子产品、家居用品、时尚服装、美妆产品等各类商品&#xff0c;用户可以通过Shopee的手机应…

【知识---c++中的条件运算符说明及使用】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言条件运算符&#xff08;ternary operator&#xff09;案例总结 前言 max_ind[k * OUTPUT_W j] 100 ? expect[k * OUTPUT_W j] 0 : expect[k * OUTPUT_W …

Pillow 报错module ‘PIL.Image’ has no attribute ‘LINEAR’

错误解决笔记。 原文链接&#xff1a;https://blog.csdn.net/qq_42773230/article/details/132736107 在运行代码期间&#xff0c;遇到了module ‘PIL.Image’ has no attribute ‘LINEAR’&#xff0c; 我安装的Pillow-10.0.2 解决办法&#xff1a;卸载Pillow pip uninst…

表的增删改查CURD(基础)

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;MySql&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 新增&#xff08;Create&#xff09; 全列插入 指定列…

Mybatis框架:入门

目录 一、前言 二、Mybatis基础 1. 下载和安装MyBatis 1.1 下载MyBatis 1.2 解压文件 2. 配置MyBatis的数据源 2.1 引入数据库驱动 2.2 配置数据源信息 3. 配置MyBatis的核心配置文件 3.1 指定映射文件路径 3.2 创建映射文件 三、MyBatis注解编程 1. 注解编程的基…

高校教务系统登录页面JS分析——河北地质大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…

鹅厂有料有趣的程序员交流圈重磅官宣!加入立享福利

号外&#xff01;腾讯云开发者社区重磅上线海量社群&#xff0c;覆盖开发者技术学习交流、工作成长、生活分享等多元场景需求&#xff0c;用最新鲜的内容&#xff0c;最好玩的互动&#xff0c;与你一起共创最有料有趣的技术人交流圈&#xff5e; 最有料有趣交流圈在这里你可以畅…

最近我发现一个好用的al绘画网站,给大家推荐一下

https://geekai.world/auth?typeregister&inviteMTMzNTE 注册时可以填写我的邀请码&#xff1a; MTMzNTE 有惊喜谢谢了&#xff1b;

Git学习笔记(第5章):Git团队协作机制

目录 5.1 团队内协作 5.2 跨团队协作 Git进行版本控制都是在本地库操作的。若想使用Git进行团队协作&#xff0c;就必须借助代码托管中心。 5.1 团队内协作 问题引入&#xff1a;成员1&#xff08;大佬&#xff09;利用Git在宿主机上初始化本地库&#xff0c;完成代码的整体…