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([]int, 100)
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(使用无缓冲的channel) 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">测试数据: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 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍…...
海外问卷调查是做什么的?
大家好,我是橙河。现在我来给大家简单讲解一下海外问卷调查是做什么的? 多年以前,人们就开始在网上进行海外问卷调查了。最常见的方法是通过问卷网站、做问卷或者论坛进行调查,现在则更多地使用各种渠道进行调查。海外国家对于问…...
Redis——数据结构介绍
Redis是一个key-value的数据库,key一般是String类型,不过value的类型是多样的: String:hello wordHash:{name:"Jack",age:21}List:[A -> B -> C -> D]Set:{A,B,C}SortedSet…...
附录2-将三国演义按章节存储为不同的txt(bs4)
地址 《三国演义》全集在线阅读_史书典籍_诗词名句网 目录 1 项目分析 2 代码 1 项目分析 我们可以在首页中找到所有的章节 每一个章节是一个a标签,a标签连接到该章节的内容 但这个网站他有bug,章节都是乱套的,我们无视这种错误&#…...
现代C++中的从头开始深度学习:【6/8】成本函数
现代C中的从头开始深度学习:成本函数 一、说明 在机器学习中,我们通常将问题建模为函数。因此,我们的大部分工作都包括寻找使用已知模型近似函数的方法。在这种情况下,成本函数起着核心作用。 这个故事是我们之前关于卷积的讨论的…...
Vue——vue3中的ref和reactive数据理解以及父子组件之间props传递的数据
ref()函数 这是一个用来接受一个内部值,返回一个响应式的、可更改的 ref 对象,此对象只有一个指向其内部值的属性 .value。 作用:创建一个响应式变量,使得某个变量在发生改变时可以同步发生在页面上。 模板语句中使用这个变量时…...
新手如何备考PMP考试?
回头看来,从战略上来说: 备考第一重点:要有一个清晰的目标——我要过! 第二重点:足够重视它——把它的优先级调整到仅次于工作:万籁俱寂,唯有学习。 第三重点:自律——有了第一点…...
FPGA输出lvds信号点亮液晶屏
1 概述 该方案用于生成RGB信号,通过lvds接口驱动逻辑输出,点亮并驱动BP101WX-206液晶屏幕。 参考:下面为参考文章,内容非常详细。Xilinx LVDS Output——原语调用_vivado原语_ShareWow丶的博客http://t.csdn.cn/Zy37p 2 功能描述 …...
算法面试-深度学习基础面试题整理(2023.8.29开始,每天下午持续更新....)
一、无监督相关(聚类、异常检测) 1、常见的距离度量方法有哪些?写一下距离计算公式。 1)连续数据的距离计算: 闵可夫斯基距离家族: 当p 1时,为曼哈顿距离;p 2时,为欧…...
FireFox禁用HTTP2
问题 最近需要调试接口,但是,Chrome都是强制使用h2协议,即HTTP/2协议。为了排除h2协议排除对接口调用的影响,需要强制浏览器使用HTTP1协议。 解决 FireFox 设置firefox的network.http.http2.enabled为禁用,这样就禁…...
搭建HTTPS服务器
HTTPS代理服务器的作用与价值 HTTPS代理服务器可以帮助我们实现网络流量的转发和加密,提高网络安全性和隐私保护。本文将指导您从零开始搭建自己的HTTPS代理服务器,让您更自由、安全地访问互联网。 1. 准备工作:选择服务器与操作系统 a. 选…...
无人化在线静电监控系统的组成
无人化在线静电监控系统是一种用于检测和监控静电情况的系统,它可以自动地实时监测各个区域的静电水平,并在出现异常情况时发出报警信号。静电监控报警器则是该系统中的一个重要组成部分,用于接收和传达报警信号。 无人化在线静电监控系统通…...
element ui级联选择器数据处理
后端同事返回的级联选择器数据的children是childrens,而组件渲染只识别children,所以需要props自定义传入,代码如下 <el-form-item label"应用页面:" prop"appId"><el-cascader:props"{ child…...
zookeeper-3.6.4集群搭建
1、上传zookeeper安装包并解压 上传路径:/opt/software/ 解压路径:/opt/module/ 2、创建数据目录及日志目录 #数据目录:/data/zookeeper/data/ #3台机器创建存储目录: sudo mkdir -p /data/zookeeper/data#日志目录:…...
15种下载文件的方法文件下载方法汇总超大文件下载
15种下载文件的方法&文件下载方法汇总&超大文件下载 15种下载文件的方法Pentesters经常将文件上传到受感染的盒子以帮助进行权限提升,或者保持在计算机上的存在。本博客将介绍将文件从您的计算机移动到受感染系统的15种不同方法。对于那些在盒子上存在且需要…...
Windows安装配置Rust(附CLion配置与运行)
Windows安装配置Rust(附CLion配置与运行) 前言一、下载二、安装三、配置标准库!!!四、使用 CLion 运行 rust1、新建rust项目2、配置运行环境3、运行 前言 本文以 windows 安装为例,配置编译器为 minGW&…...
【ROS】例说mapserver静态地图参数(对照Rviz、Gazebo环境)
文章目录 例说mapserver静态地图参数1. Rviz中显示的地图2. mapserver保存地图详解3. 补充实验 例说mapserver静态地图参数 1. Rviz中显示的地图 在建图过程中,rviz会显示建图的实时情况,其输出来自于SLAM,浅蓝色区域为地图大小,…...
【RapidAI】P0 项目总览
RapidAI 项目总览 ** 内容介绍 ** Author: SWHL、omahs Github: https://github.com/RapidAI/Knowledge-QA-LLM/ CSDN Author: 脚踏实地的大梦想家 UI Demo: ** 读者须知 ** 本系列博文,主要内容为将 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 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[i]i j < n 返回到达 nums[n…...
20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转
登录框的按钮操作,并在登录成功后进行界面跳转 app.cpp #include "app.h" #include <cstdio> #include <QDebug> #include <QLineEdit> #include <QLabel> #include <QPainter> #include <QString> #include <Q…...
039 - sql逻辑操作符
前提: 做两个表employee和movie,用来练习使用; 表一: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是一种数据库连接技术,在不同的数据库之间进行数据传输和共享。它提供了一种透明的方法,让一个数据库访问另一个数据库的数据。 DbLink的优点是可以在多个数据库间实现数据共享,并且为不同数据库间的数据访问提供了便捷的…...
2.3 Vector 动态数组(迭代器)
C数据结构与算法 目录 本文前驱课程 1 C自学精简教程 目录(必读) 2 Vector<T> 动态数组(模板语法) 本文目标 1 熟悉迭代器设计模式; 2 实现数组的迭代器; 3 基于迭代器的容器遍历; 迭代器语法介绍 对迭…...
【ES6】Proxy的高级用法,实现一个生成各种 DOM 节点的通用函数dom
下面的例子则是利用get拦截,实现一个生成各种 DOM 节点的通用函数dom。 <body> </body><script>const dom new Proxy({}, {get(target, property) {return function(attrs {}, ...children) {const el document.createElement(property);for …...
气象站是什么设备?功能是什么?
气象站是一种用于测量和记录气象数据的设备。它通常是由各种传感器及其数据传输设备、固定设备和供电设备组成,可以测量风速、风向、温度、湿度、气压、降水量等气象要素,并将这些数据记录下来,以便进一步分析和研究。 气象站通常设置在广阔…...
227. 基本计算器 II Python
文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-2^31, 2^31 - 1]的范围内…...
python中字典常用函数
字典常用函数 cmp(dict1,dict2) (已删除,直接用>,<,即可) 如果两个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。 先比较字典的长度,然后比较键&#x…...
做网站要多少钱呀/app拉新推广项目
我看了一下思矛师范高等专科学校的徐斌发表在高师理科学刊的《整系数多项式的整除平移不变性》. 徐斌对“整除平移不变性定理”的证明有点麻烦.不麻烦证明方法在下面: $f(x)$是整系数多项式,则$k|f(n)$等价于$k|f(nk)$. 证明:设\begin{align*} f(x)a_mx^ma_{m-1}x^{…...
滨州五学一做考试网站/线上宣传推广方案
国民技术通用MCU N32G452系列芯片简介 产品简介 N32G452系列 (通用基本型) 采用32-bit ARM Cortex-M4内核,支持浮点运算和DSP指令,高达512KB 片内FLASH,144KB SRAM,多达18个数字通讯接口及4个模拟接口,内置10余种密码…...
做电商网站用什么软件/引擎优化seo
一、Hibernate持久化对象三种状态 在Hibernate中持久化类的对象可以划分为三种状态,分别是瞬态,持久态,脱管态。 1. 瞬态(Transient),也叫临时态。处于这种状态的对象具备的特征如下: a) 不在Session的缓存中ÿ…...
2021中国企业500强/杭州seo
按照网上的方法能够实现连接数据库,方法如下:(网址为http://jingyan.baidu.com/article/86112f135e624a2736978755.html?qq-pf-topcqq.c2c),问怎样查询一个建好的数据库?(希望...按照网上的方法能够实现连接数据库,方…...
定西做网站/广州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等是集中式的版本控制系统,而Git则是分布式的版本控制系统,为什么叫分布式的版本控制系统呢? 因为Git客户端并不只是提取最新版本的文件快照,而是把代码仓库完成地镜像下来。这么一来࿰…...