当前位置: 首页 > news >正文

Go用两个协程交替打印100以内的奇偶数

方式1(使用无缓冲的channel)


package main

import (
 "fmt"
 "time"
)

var flagChan = make(chan int)

func wokr1() {
 for i := 1; i <= 100; i++ {
  flagChan <- 666 // 塞入
  if i%2 == 1 {
   fmt.Println("协程1打印:", i)
  }
 }
}

func wokr2() {
 for i := 1; i <= 100; i++ {
  _ = <-flagChan // 取出
  if i%2 == 0 {
   fmt.Println("协程2打印:", i)
  }
 }
}

func main() {
 go wokr1()
 go wokr2()

 time.Sleep(3 * time.Second) // 可以通过sync.WaitGroup或者另外一个channel来控制主协程的退出
}

两个协程,一个channel,把这个无缓冲的channel当成一把锁使用(起阻塞作用)

或者使用闭包方式,如下(与上面方式一样)

package main

import (
 "fmt"
 "time"
)

func main() {
 c := make(chan int)
 go func() {
  for i := 1; i < 101; i++ {
   c <- 666
   //奇数
   if i%2 == 1 {
    fmt.Println("协程1打印:", i)
   }
  }
 }()
 go func() {
  for i := 1; i < 101; i++ {
   <-c
   //偶数
   if i%2 == 0 {
    fmt.Println("协程2打印:", i)
   }
  }
 }()
 time.Sleep(3 * time.Second)
}


方式2(设置GOMAXPROCS=1)


package main

import (
 "fmt"
 "runtime"
 "time"
)

func main() {
 //设置可同时使用的CPU核数为1
 runtime.GOMAXPROCS(1)
 go func() {
  for i := 1; i < 101; i++ {
   //奇数
   if i%2 == 1 {
    fmt.Println("协程1打印:", i)
   }
   //让出cpu
   runtime.Gosched()
  }
 }()
 go func() {
  for i := 1; i < 101; i++ {
   //偶数
   if i%2 == 0 {
    fmt.Println("协程2打印:", i)
   }
   //让出cpu
   runtime.Gosched()
  }
 }()
 time.Sleep(3 * time.Second)
}

借此可以搞清楚*runtime.GOMAXPROCS(1)runtime.Gosched()*的使用方式


交替打印切片中奇偶数位元素的值


package main

import (
 "fmt"
 "time"
)

func main() {

 sli := make([]int100)
 for k := 0; k < 100; k++ {
  sli[k] = k * 10
 }

 // 交替打印sli这个切片中奇偶数位元素的值
 // fmt.Println(len(sli)) //100

 c := make(chan int)
 go func() {
  for i := 0; i < len(sli); i++ {
   c <- 666
   //奇数
   if i%2 == 1 {
    fmt.Println("协程1打印:", sli[i])
   }
  }
 }()
 go func() {
  for i := 0; i < len(sli); i++ {
   <-c
   //偶数
   if i%2 == 0 {
    fmt.Println("协程2打印:", sli[i])
   }
  }
 }()
 time.Sleep(3 * time.Second)

}


本文由 mdnice 多平台发布

相关文章:

Go用两个协程交替打印100以内的奇偶数

方式1&#xff08;使用无缓冲的channel&#xff09; package mainimport ( "fmt" "time")var flagChan make(chan int)func wokr1() { for i : 1; i < 100; i { flagChan <- 666 // 塞入 if i%2 1 { fmt.Println("协程1打印:", i) …...

css 文字单行多行超出长度后显示 ...

0.超出… 1、单行文本超出 <div class"content">测试数据&#xff1a;css单行文本超出显示省略号--------</div><style> .content{width: 200px;height: 200px;overflow:hidden;white-space: nowrap;text-overflow: ellipsis;-o-text-overflow:el…...

C++将派生类赋值给基类

在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍…...

海外问卷调查是做什么的?

大家好&#xff0c;我是橙河。现在我来给大家简单讲解一下海外问卷调查是做什么的&#xff1f; 多年以前&#xff0c;人们就开始在网上进行海外问卷调查了。最常见的方法是通过问卷网站、做问卷或者论坛进行调查&#xff0c;现在则更多地使用各种渠道进行调查。海外国家对于问…...

Redis——数据结构介绍

Redis是一个key-value的数据库&#xff0c;key一般是String类型&#xff0c;不过value的类型是多样的&#xff1a; String&#xff1a;hello wordHash&#xff1a;{name:"Jack",age:21}List&#xff1a;[A -> B -> C -> D]Set&#xff1a;{A,B,C}SortedSet…...

附录2-将三国演义按章节存储为不同的txt(bs4)

地址 《三国演义》全集在线阅读_史书典籍_诗词名句网 目录 1 项目分析 2 代码 1 项目分析 我们可以在首页中找到所有的章节 每一个章节是一个a标签&#xff0c;a标签连接到该章节的内容 但这个网站他有bug&#xff0c;章节都是乱套的&#xff0c;我们无视这种错误&#…...

现代C++中的从头开始深度学习:【6/8】成本函数

现代C中的从头开始深度学习&#xff1a;成本函数 一、说明 在机器学习中&#xff0c;我们通常将问题建模为函数。因此&#xff0c;我们的大部分工作都包括寻找使用已知模型近似函数的方法。在这种情况下&#xff0c;成本函数起着核心作用。 这个故事是我们之前关于卷积的讨论的…...

Vue——vue3中的ref和reactive数据理解以及父子组件之间props传递的数据

ref()函数 这是一个用来接受一个内部值&#xff0c;返回一个响应式的、可更改的 ref 对象&#xff0c;此对象只有一个指向其内部值的属性 .value。 作用&#xff1a;创建一个响应式变量&#xff0c;使得某个变量在发生改变时可以同步发生在页面上。 模板语句中使用这个变量时…...

新手如何备考PMP考试?

回头看来&#xff0c;从战略上来说&#xff1a; 备考第一重点&#xff1a;要有一个清晰的目标——我要过&#xff01; 第二重点&#xff1a;足够重视它——把它的优先级调整到仅次于工作&#xff1a;万籁俱寂&#xff0c;唯有学习。 第三重点&#xff1a;自律——有了第一点…...

FPGA输出lvds信号点亮液晶屏

1 概述 该方案用于生成RGB信号&#xff0c;通过lvds接口驱动逻辑输出&#xff0c;点亮并驱动BP101WX-206液晶屏幕。 参考&#xff1a;下面为参考文章&#xff0c;内容非常详细。Xilinx LVDS Output——原语调用_vivado原语_ShareWow丶的博客http://t.csdn.cn/Zy37p 2 功能描述 …...

算法面试-深度学习基础面试题整理(2023.8.29开始,每天下午持续更新....)

一、无监督相关&#xff08;聚类、异常检测&#xff09; 1、常见的距离度量方法有哪些&#xff1f;写一下距离计算公式。 1&#xff09;连续数据的距离计算&#xff1a; 闵可夫斯基距离家族&#xff1a; 当p 1时&#xff0c;为曼哈顿距离&#xff1b;p 2时&#xff0c;为欧…...

FireFox禁用HTTP2

问题 最近需要调试接口&#xff0c;但是&#xff0c;Chrome都是强制使用h2协议&#xff0c;即HTTP/2协议。为了排除h2协议排除对接口调用的影响&#xff0c;需要强制浏览器使用HTTP1协议。 解决 FireFox 设置firefox的network.http.http2.enabled为禁用&#xff0c;这样就禁…...

搭建HTTPS服务器

HTTPS代理服务器的作用与价值 HTTPS代理服务器可以帮助我们实现网络流量的转发和加密&#xff0c;提高网络安全性和隐私保护。本文将指导您从零开始搭建自己的HTTPS代理服务器&#xff0c;让您更自由、安全地访问互联网。 1. 准备工作&#xff1a;选择服务器与操作系统 a. 选…...

无人化在线静电监控系统的组成

无人化在线静电监控系统是一种用于检测和监控静电情况的系统&#xff0c;它可以自动地实时监测各个区域的静电水平&#xff0c;并在出现异常情况时发出报警信号。静电监控报警器则是该系统中的一个重要组成部分&#xff0c;用于接收和传达报警信号。 无人化在线静电监控系统通…...

element ui级联选择器数据处理

后端同事返回的级联选择器数据的children是childrens&#xff0c;而组件渲染只识别children&#xff0c;所以需要props自定义传入&#xff0c;代码如下 <el-form-item label"应用页面&#xff1a;" prop"appId"><el-cascader:props"{ child…...

zookeeper-3.6.4集群搭建

1、上传zookeeper安装包并解压 上传路径&#xff1a;/opt/software/ 解压路径&#xff1a;/opt/module/ 2、创建数据目录及日志目录 #数据目录&#xff1a;/data/zookeeper/data/ #3台机器创建存储目录&#xff1a; sudo mkdir -p /data/zookeeper/data#日志目录&#xff1a…...

15种下载文件的方法文件下载方法汇总超大文件下载

15种下载文件的方法&文件下载方法汇总&超大文件下载 15种下载文件的方法Pentesters经常将文件上传到受感染的盒子以帮助进行权限提升&#xff0c;或者保持在计算机上的存在。本博客将介绍将文件从您的计算机移动到受感染系统的15种不同方法。对于那些在盒子上存在且需要…...

Windows安装配置Rust(附CLion配置与运行)

Windows安装配置Rust&#xff08;附CLion配置与运行&#xff09; 前言一、下载二、安装三、配置标准库&#xff01;&#xff01;&#xff01;四、使用 CLion 运行 rust1、新建rust项目2、配置运行环境3、运行 前言 本文以 windows 安装为例&#xff0c;配置编译器为 minGW&…...

【ROS】例说mapserver静态地图参数(对照Rviz、Gazebo环境)

文章目录 例说mapserver静态地图参数1. Rviz中显示的地图2. mapserver保存地图详解3. 补充实验 例说mapserver静态地图参数 1. Rviz中显示的地图 在建图过程中&#xff0c;rviz会显示建图的实时情况&#xff0c;其输出来自于SLAM&#xff0c;浅蓝色区域为地图大小&#xff0c…...

【RapidAI】P0 项目总览

RapidAI 项目总览 ** 内容介绍 ** Author&#xff1a; SWHL、omahs Github&#xff1a; https://github.com/RapidAI/Knowledge-QA-LLM/ CSDN Author&#xff1a; 脚踏实地的大梦想家 UI Demo&#xff1a; ** 读者须知 ** 本系列博文&#xff0c;主要内容为将 RapidAI 项目逐…...

初识c++

文章目录 前言一、C命名空间1、命名空间2、命名空间定义 二、第一个c程序1、c的hello world2、std命名空间的使用惯例 三、C输入&输出1、c输入&输出 四、c中缺省参数1、缺省参数概念2、缺省参数分类3、缺省参数应用 五、c中函数重载1、函数重载概念2、函数重载应用 六、…...

【面试经典150题】跳跃游戏Ⅱ

题目链接 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 nums[n…...

20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转

登录框的按钮操作&#xff0c;并在登录成功后进行界面跳转 app.cpp #include "app.h" #include <cstdio> #include <QDebug> #include <QLineEdit> #include <QLabel> #include <QPainter> #include <QString> #include <Q…...

039 - sql逻辑操作符

前提&#xff1a; 做两个表employee和movie&#xff0c;用来练习使用&#xff1b; 表一&#xff1a;employee -- 创建表employee CREATE TABLE IF NOT EXISTS employee(id INT NOT NULL AUTO_INCREMENT,first_name VARCHAR(100) NOT NULL,last_name VARCHAR(100) NOT NULL,t…...

DbLInk使用

DbLInk介绍 DbLink是一种数据库连接技术&#xff0c;在不同的数据库之间进行数据传输和共享。它提供了一种透明的方法&#xff0c;让一个数据库访问另一个数据库的数据。 DbLink的优点是可以在多个数据库间实现数据共享&#xff0c;并且为不同数据库间的数据访问提供了便捷的…...

2.3 Vector 动态数组(迭代器)

C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组&#xff08;模板语法&#xff09; 本文目标 1 熟悉迭代器设计模式&#xff1b; 2 实现数组的迭代器&#xff1b; 3 基于迭代器的容器遍历&#xff1b; 迭代器语法介绍 对迭…...

【ES6】Proxy的高级用法,实现一个生成各种 DOM 节点的通用函数dom

下面的例子则是利用get拦截&#xff0c;实现一个生成各种 DOM 节点的通用函数dom。 <body> </body><script>const dom new Proxy({}, {get(target, property) {return function(attrs {}, ...children) {const el document.createElement(property);for …...

气象站是什么设备?功能是什么?

气象站是一种用于测量和记录气象数据的设备。它通常是由各种传感器及其数据传输设备、固定设备和供电设备组成&#xff0c;可以测量风速、风向、温度、湿度、气压、降水量等气象要素&#xff0c;并将这些数据记录下来&#xff0c;以便进一步分析和研究。 气象站通常设置在广阔…...

227. 基本计算器 II Python

文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-2^31, 2^31 - 1]的范围内…...

python中字典常用函数

字典常用函数 cmp(dict1,dict2) &#xff08;已删除&#xff0c;直接用>,<,即可&#xff09; 如果两个字典的元素相同返回0&#xff0c;如果字典dict1大于字典dict2返回1&#xff0c;如果字典dict1小于字典dict2返回-1。 先比较字典的长度&#xff0c;然后比较键&#x…...

做网站要多少钱呀/app拉新推广项目

我看了一下思矛师范高等专科学校的徐斌发表在高师理科学刊的《整系数多项式的整除平移不变性》. 徐斌对“整除平移不变性定理”的证明有点麻烦.不麻烦证明方法在下面: $f(x)$是整系数多项式&#xff0c;则$k|f(n)$等价于$k|f(nk)$. 证明:设\begin{align*} f(x)a_mx^ma_{m-1}x^{…...

滨州五学一做考试网站/线上宣传推广方案

国民技术通用MCU N32G452系列芯片简介 产品简介 N32G452系列 (通用基本型) 采用32-bit ARM Cortex-M4内核&#xff0c;支持浮点运算和DSP指令&#xff0c;高达512KB 片内FLASH&#xff0c;144KB SRAM&#xff0c;多达18个数字通讯接口及4个模拟接口&#xff0c;内置10余种密码…...

做电商网站用什么软件/引擎优化seo

一、Hibernate持久化对象三种状态 在Hibernate中持久化类的对象可以划分为三种状态&#xff0c;分别是瞬态&#xff0c;持久态&#xff0c;脱管态。 1. 瞬态(Transient)&#xff0c;也叫临时态。处于这种状态的对象具备的特征如下&#xff1a; a) 不在Session的缓存中&#xff…...

2021中国企业500强/杭州seo

按照网上的方法能够实现连接数据库&#xff0c;方法如下&#xff1a;(网址为http://jingyan.baidu.com/article/86112f135e624a2736978755.html?qq-pf-topcqq.c2c)&#xff0c;问怎样查询一个建好的数据库&#xff1f;(希望...按照网上的方法能够实现连接数据库&#xff0c;方…...

定西做网站/广州seo技术优化网站seo

基于LabVIEW的S7300PLC与PC机的串口通信2011 仪 表 技 术 与 传 感 器 20115 Instrument Technique and Sensor No5LabV IEW S7- 300 PLC PC刘小丽, 张晓光(, 221116): 根据工业系统设计需求, 采用图形化编程语言 LabVI W 设计了 S7 - 300 PLC和 PC机间的串 通信介绍了使用 396…...

b2b有哪些电商平台网站/百度广告推广费用

01、 与其他版本系统的区别 SVN,CVS等是集中式的版本控制系统&#xff0c;而Git则是分布式的版本控制系统&#xff0c;为什么叫分布式的版本控制系统呢&#xff1f; 因为Git客户端并不只是提取最新版本的文件快照&#xff0c;而是把代码仓库完成地镜像下来。这么一来&#xff0…...