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

这篇具有很好参考价值的文章主要介绍了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 多平台发布文章来源地址https://www.toymoban.com/news/detail-681970.html

到了这里,关于Go用两个协程交替打印100以内的奇偶数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python【判断奇偶数】

    目录 要求: 第一种:余数判断法 第二种:位运算判断法 第三种:整除判断法 判断一个整数是奇数还是偶数,至少有两种方式实现。 代码如下: 代码如下: 代码如下:  

    2024年02月04日
    浏览(41)
  • chatgpt赋能python:Python的奇偶数判断方法

    Python是一种优秀的编程语言,被广泛应用于数据分析、人工智能、Web开发、游戏开发等领域。在Python的基础语法中,奇偶数的判断是一个非常基础且常用的知识点。本文将介绍Python中奇偶数判断的方法及其应用。 方法一:使用取模运算符 在Python中,判断一个数是否为偶数可

    2024年02月06日
    浏览(47)
  • chatgpt赋能python:用Python统计奇偶数的方法

    Python作为一种广泛应用于数据分析和科学计算的编程语言,具有许多内置函数和库,可以轻松地进行奇偶数的统计。这篇文章将向您展示如何使用Python统计奇偶数,并提供几个常见的示例。 奇数是除以2余数为1的整数。例如,1、3、5、7是奇数,而2、4、6、8是偶数。在Python中

    2024年02月07日
    浏览(31)
  • 多线程知识:三个线程如何交替打印ABC循环100次

    本文博主给大家讲解一道网上非常经典的多线程面试题目。关于三个线程如何交替打印ABC循环100次的问题。 下文实现代码都基于Java代码在单个JVM内实现。 给定三个线程,分别命名为A、B、C,要求这三个线程按照顺序交替打印ABC,每个字母打印100次,最终输出结果为: 推荐博

    2024年02月12日
    浏览(100)
  • 高频面试题:如何分别用三种姿势实现三个线程交替打印0到100

    最近面试遇到的一道题,需要三个线程交替打印0-100,当时对多线程并不是很熟悉因此没怎么写出来,网上搜了之后得到现 实现思路:判断当前打印数字和线程数的取余,不等于当前线程则处于等待状态。循环结束唤醒所有等待线程。       实现思路:实现方式和synchronize

    2024年02月10日
    浏览(54)
  • JavaScript实现求1-100之间不能被3整除的数之和,求100以内偶数的和的两个程序代码

    以下为实现求1-100之间不能被3整除数之和求100以内偶数的和的两个程序代码和运行截图 目录 前言 一、实现输入两个数比较两个数的大小 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 二、求100以内偶数的和 2.1 运行流程及思想 2.2 代码段 2.3 JavaScript语句代码

    2024年02月03日
    浏览(44)
  • python 100以内的质数

    可以使用for循环 要找出从1到100之间的质数,你可以使用嵌套循环和判断条件来实现。  

    2024年02月06日
    浏览(38)
  • [c语言]求100以内的素数

    (一)、 关于整除算法: 要判断某数是不是质数,不必验证某数m是否被2~m-1的某一个整数整除,只需验证是否被2~sqrt(m)的某一个整数去除就可以了。若只要m被2~sqrt(m)的某个整数整除了,那么它就不是质数。例16能被2,4,8整除,根号16=4,2为2~4之间的一个整数 (二)、

    2024年02月06日
    浏览(44)
  • 100行以内Python能做那些事

    100行以内的Pyhton代码可以做哪些有意思的事 按照难度1-5颗星,分为五个文件夹 希望大家可以补充 Python3.7 Pycharm社区版2019 关于用到的Python库,有些是自带的,有些需要安装,但是都很简单,不再赘述 快速索引,实际代码行数均小于所写行数(有注释和空行) 一星难度列表 b

    2024年02月04日
    浏览(36)
  • [C语言]输出100以内的所有素数(质数)

    概念解读 : 质数又被称为素数,是指一个大于1的自然数,除了1和它自身外,不能被其它自然数整除,且其个数是无穷的。 思路分析: 对于代码大方向,我们可以直接主函数中写,也可以用可移植性高的自定义函数来写。 100以内样例输出示意 2 3 5 7 11 13 17 19 23 29 31 37 41 43

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包