首页 > 其他分享 >两个 goroutine 交替打印 1-100

两个 goroutine 交替打印 1-100

时间:2024-05-28 18:12:33浏览次数:31  
标签:打印 int make goroutine chan ch1 100

两个 goroutine 交替打印 1-100

channel 操作

// 两个 Goroutine 交替打印 1 到 100
func main() {
	ch1, ch2 := make(chan int), make(chan int)
	done := make(chan int)

	go func() {
		for x := range ch1 {
			println("ch1: ", x)
			ch2 <- x + 1
		}
	}()
	
	go func() {
		for {
			y := <-ch2
			println("ch2: ", y)
			if y == 100 {   // 这里都出来的是 2 的倍数,所以判断是否为 100
				break
			}
			ch1 <- y + 1
		}
		close(ch1) // 谁写谁关闭
		close(done)
	}()

	ch1 <- 1

	<-done
}
  • ch1 用来打印奇数
  • ch2 用来打印偶数
  • done 用来控制程序退出

标签:打印,int,make,goroutine,chan,ch1,100
From: https://www.cnblogs.com/LanceZh/p/18218592

相关文章

  • 调用mybatisPlus的 Iservice中的save方法,后台日志打印出来Insert语句,但是没插入到数据
    问题:调用mybatisPlus的Iservice中的save方法,后台日志打印出来Insert语句,但是没插入到数据库表中;一共向两个表中插入数据;weather,向天气表中插入数据成功,但是在异步任务中向三方同步日志表中 third_request_log是只打印出了成功Insert语句和参数,但是实际未插入成功:代码如下:......
  • @Transactional(rollbackFor = Exception.class)注解的方法A,此方法A中插入成功,再调用
    当你在一个带有@Transactional注解的方法中插入数据成功,然后调用另一个方法(无论该方法是否也带有@Transactional注解),但发现第二个方法中的插入语句没有实际插入数据,但打印出了insert语句,这通常意味着事务没有按预期执行或事务被提前提交了。这里有几个可能的原因和解决方案:自......
  • 小米万兆路由器(AX10000)SimpleDocker部署alist+aria2,实现离线下载
     从镜像管理中拉取p3terx/aria2-pro和xhofe/alist: 输入镜像名称后点击OK,出现成功提示后关闭拉取窗口: 等镜像拉取完毕后,创建alist容器: 选择简单模式:alist容器参数:端口映射:5244:5244环境变量:PUID=0;PGID=0;UMASK_SET=022; 复制alist的宿主目录: 创建aria......
  • c#调用TSC打印机进行打印
    需求背景业务打印需求需要使用TSC打印机进行条码二维码打印(由旧项目改造触发的需求)前期准备vs2022+WORK Service+TSCLIB.DLL使用方式及部分代码示例创建一个类PrinterHelper.cs。类中来使用TSCLIB进行模版的编辑及调用打印机进行打印。在需要使用打印功能的地方调用打印......
  • 什么?部署ClickHouse的服务器CPU利用率100%了?
    背景  某客户现场的ClickHouse所在服务器资源占用率100%了,引发了服务器告警。观察Grafana监控面板发现,从12点左右出现了大量的碎片写入,从而引起了相关指标的快速上升。  本文主要通过ClickHouse官方的系统表system.query_log表进行问题排查定位,结合Grafana监控面板最......
  • AP5101C高压线性LED恒流驱动芯片 6-100V 2A LED灯电源驱动
    产品描述AP5101C是一款高压线性LED恒流芯片,简单、内置功率管,适用于6-100V输入的高精度降压LED恒流驱动芯片。电流2.0A。AP5101C可实现内置MOS做2.0A,外置MOS可做3.0A的。AP5101C内置温度保护功能,温度保护点为130度,温度达到130度时,输出电流慢慢减小,达到保护芯片电......
  • 金字塔打印
    目录C++程序打印金字塔图案代码实现代码输出结论C++程序打印金字塔图案在本文中,我们将学习使用C++语言编写一个程序来打印金字塔图案。这是一个基础的编程练习,有助于加深对C++语言基础语法和算法的理解。代码实现以下是一个简单的C++程序,用于打印金字塔图案。主要......
  • AP2917双路输出降压恒流驱动IC 5-100V 12W 摩托车灯照明IC
    AP2917是一款可以一路灯串切换两路灯串的降压恒流驱动器,高效率、外围简单、内置功率管,适用于5-100V输入的高精度降压LED恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流1.2A。AP2917一路灯亮切换两路灯亮,其中一路灯亮可以全亮,可以半亮。AP2917工作频率固定在......
  • 阿里面试:NIO为什么会导致CPU100%?
    在Java中总共有三种IO类型:BIO(BlockingI/O,阻塞I/O)、NIO(Non-blockingI/O,非阻塞I/O)和AIO(AsynchronousI/O,异步I/O),它们的区别如下:在JDK1.4之前,只有BIO一种模式,其开发过程相对简单,新来一个连接就会创建一个新的线程处理,但随着请求并发度的提升,BIO很快遇到了性能瓶颈。......
  • AutoCAD中图形打印成PDF后尺寸为什么比实际绘图尺寸小几毫米?
    最近有小伙伴提问,将CAD打印成PDF后,再将PDF文件重新导入到CAD软件中比对,发现图形比原CAD图形尺寸小了几毫米,如下: 这个主要是打印比例设置导致的,CAD默认打印比例默认勾选的是「布满图纸」,即布满到了实际打印范围,这个实际打印范围如果你没有事先对图纸进行修改到边界为0,那么就会......