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. 最近事情忙,心态也有点不积极.技术倒是没有落下,只是越来越不想写博客了.想到 ...
随机推荐
- 为 KubeSphere 集群启用免费的泛域名 SSL 证书并实现证书自动更新和分发
作者:scwang18,主要负责技术架构,在容器云方向颇有研究. 前言 KubeSphere 集群默认安装的证书是自签发证书,浏览器访问访问会发出安全提醒.本文记录了利用 let's encrytp ...
- C++ 字面值常量的类型
在C++中,字面常量(literal constant)即无需定义可以直接写出来的量.字面常量的值一望便知,但是他的数据类型往往不能被准确分辨(尤其是使用auto时). 我们直接写出来的有确定值的量就 ...
- 基于Material Design风格开源、免费的WinForms UI控件库
前言 今天大姚给大家分享一个基于 Google 的 Material Design 风格开源.免费的.NET WinForms UI控件库:MaterialSkin. WinForms介绍 WinFo ...
- 适合才最美:Shiro安全框架使用心得
大家好,我是 V 哥.Apache Shiro 是一个强大且灵活的 Java 安全框架,专注于提供认证.授权.会话管理和加密功能.它常用于保护 Java 应用的访问控制,特别是在 Web 应用中.相比 ...
- KTL (0.9.2,通达信mdt文件)
K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...
- 【鸣潮,原神PC端启动器】仿二次元手游PC端游戏启动器,以鸣潮为例。
二游GAMELanucher启动器 1.前言 许多二次元手游(原神,鸣潮,少女前线)的PC端启动器都是使用Qt做的,正好最近正在玩鸣潮,心血来潮,便仿鸣潮启动器,从头写一个.先下载一个官方版的PC启动 ...
- Air780E软件指南:zlib解压示例
一.ZLIB解压工具简介 Zlib解压工具是一个广泛使用的压缩和解压缩库,主要用于处理数据的压缩和解压缩任务.Zlib使用的是DEFLATE算法,这是一种通用的压缩算法.它被应用在很多场景中,比如压缩 ...
- 报错处理TypeError: can't multiply sequence by non-int of type 'float'
在练习格式化输出时出现错误TypeError: can't multiply sequence by non-int of type 'float' 为什么会出现TypeError:不能将序列乘以'f ...
- VTable-Gantt:功能强大、性能优异的开源甘特图组件
甘特图的基本概念 在项目管理中,甘特图是一种常用的工具,用于展示项目任务的时间安排和进度. 我们将甘特图拆分成以下几个部分: 左侧任务列表:显示项目的任务列表,通常在图的左侧. 顶部时间轴:显示项目的 ...
- RabbitMQ接入之PHP
上一篇记录下RabbitMQ的安装与管理界面,接下来开始看PHP是如何接入的 1.安装php-amqplib php-amqplib是一个纯PHP库,使用它,基于PHP的脚本客户端就可以轻松的连接和操 ...