golang两个协程交替打印出1-100
基于channel实现的,两个协程交替打印出1-100
package main
import (
"fmt"
"sync"
)
var (
toOdd = make(chan struct{})
toEven = make(chan struct{})
wg = sync.WaitGroup{}
)
func main() {
wg.Add(2)
go printOdd()
go printEven()
wg.Wait()
fmt.Println("-----done-----")
}
func printOdd() {
defer wg.Done()
for i := 1; i <= 100; i += 2 {
if i != 1 {
<-toOdd
}
fmt.Println(i)
toEven <- struct{}{}
}
}
func printEven() {
defer wg.Done()
for i := 2; i <= 100; i += 2 {
<-toEven
fmt.Println(i)
if i != 100 {
toOdd <- struct{}{}
}
}
}
golang两个协程交替打印出1-100的更多相关文章
- unity,下面两个协程不等价
//代码1 IEnumerator A(){ Debug.Log(“hi1”); { yield return new WaitForSeconds(1f); Debug.Log(“hi2”); } ...
- 『GoLang』协程与通道
作为一门 21 世纪的语言,Go 原生支持应用之间的通信(网络,客户端和服务端,分布式计算)和程序的并发.程序可以在不同的处理器和计算机上同时执行不同的代码段.Go 语言为构建并发程序的基本代码块是 ...
- 在C++中使用golang的协程
开源项目cpp_features提供了一个仿golang协程的stackful协程库. 可以在c++中使用golang的协程,大概语法是这样的: #include <iostream> v ...
- Golang 之协程详解
转自:https://www.cnblogs.com/liang1101/p/7285955.html 一.Golang 线程和协程的区别 备注:需要区分进程.线程(内核级线程).协程(用户级线程)三 ...
- Goroutine并发调度模型深度解析之手撸一个协程池
golanggoroutine协程池Groutine Pool高并发 并发(并行),一直以来都是一个编程语言里的核心主题之一,也是被开发者关注最多的话题:Go语言作为一个出道以来就自带 『高并发』光环 ...
- GoLang之协程
GoLang之协程 目前,WebServer几种主流的并发模型: 多线程,每个线程一次处理一个请求,在当前请求处理完成之前不会接收其它请求:但在高并发环境下,多线程的开销比较大: 基于回调的异步IO, ...
- Golang 的 协程调度机制 与 GOMAXPROCS 性能调优
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- java面试题:已知一个数组[2,4,6,2,1,5],将该数组进行排序(降序,不能用工具类进行排序),创建两条线程交替输出排序后的数组,线程名自定义
package com.swift; import java.util.Arrays; import java.util.Comparator; public class ArrayThread_Te ...
- asyncio异步模块的21个协程编写实例
启动一个无返回值协程 通过async关键字定义一个协程 import sys import asyncio async def coroutine(): print('运行协程') if sys.ve ...
- 实现一个协程版mysql连接池
实现一个协程版的mysql连接池,该连接池支持自动创建最小连接数,自动检测mysql健康:基于swoole的chanel. 最近事情忙,心态也有点不积极.技术倒是没有落下,只是越来越不想写博客了.想到 ...
随机推荐
- Centos7安装部署prometheus
普罗米修斯的主要特点是: 具有由度量名称和键/值对标识的时间序列数据的多维数据模型 PromQL,一种灵活的查询语言, 可以利用这一维度 不依赖分布式存储; 单个服务器节点是自治的 时间序列集合通过H ...
- Mellanox hp 544+FLR QSFP 40G 网卡升级固件及性能测试
烧录命令参考视频: 相关视频: https://www.youtube.com/watch?v=_2-qPV1giEc flint -allow_psid_change -d /dev/mst/mt4 ...
- 8.Jenkins+Docker+SpringCloud微服务持续集成
前言 通过前几章的学习,了解了持续集成概念以及相关技术的学习和使用 接下来学习构建一整套SpringCloud微服务+Docker+Jenkins的持续集成案例 环境 架构图 流程说明: 开发人员将代 ...
- 🥳重磅更新!Fluent Editor 开源富文本支持 LaTeX 可编辑公式啦~
你好,我是 Kagol,个人公众号:前端开源星球. Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,框架无关.功能强大.开箱即 ...
- 卸载php8后导致php7.4不能被apache解析了
今天突然发现web页面不能解析了,直接返回php代码了,想起来可能是由于不小心更新过apt 源,有一次安装了php8,后来又卸载,导致的,查了一下,发现是libapache2-mod-php没安装. ...
- 【昌哥IT课堂】MySQL8.0新特性之特权连接
概述: ERROR 1040 (HY000): Too many connections 上面这个报错,开发或DBA一般都遇见过.那么碰到这个问题,我们应该怎么办呢? 在MySQL 5.7及之前版本, ...
- Think in Java之构造器的真正调用顺序
构造器是OOP的重要组成部分,很多人认为它很容易.只不过是new了一个对象而已.而think in java的作者却告诉我们,其实这并不容易.先看下面这个例子.在你没看结果之前,你觉得你的答案是对的么 ...
- 通过双 key 来解决缓存并发问题
我们在使用缓存的时候,不管Redis或者是Memcached,基本上都会遇到以下3个问题:缓存穿透.缓存并发.缓存集中失效.这篇文章主要针对[缓存并发]问题展开讨论,并给出具体的解决方案. 1.什么是 ...
- 终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名)
升讯威在线客服与营销系统是基于 .net core / WPF 开发的一款在线客服软件,宗旨是: 开放.开源.共享.努力打造 .net 社区的一款优秀开源产品. 背景 我在业余时间开发的这个客服系统, ...
- MySql 9 in Docker 主从切换
继上一篇<MySql 9 in Docker 利用克隆插件搭建主从>我们说了主从复制后, 那么我们接下来说说如何手动的进行主从切换. 动手~ 1. 原主库设置 切断应用对主库的访问 主库设 ...