go无缓冲通道
2024-08-27 17:59:40
package main
import (
"fmt"
"math/rand"
"sync"
"time"
)
//wg用来等待程序
var wg sync.WaitGroup
func init() {
//设置随机数种子,加上这行代码,可以保证每次随机都是随机的
rand.Seed(time.Now().UnixNano())
}
func main() {
//无缓冲的通道
court := make(chan int)
//计数加2,表示要等待两个goroutine
wg.Add(2)
go player("Nadal", court)
go player("Djokovic", court)
//发球
court <- 1
//等待游戏结束
wg.Wait()
}
func player(name string, court chan int) {
//在函数退出时调用Done来通知函数工作完成
defer wg.Done()
for {
ball, ok := <-court
if !ok {
//等待球被击打过来
fmt.Printf("Player %s Won\n",name)
return
}
//选随机数,然后用这个数判断我们是否丢球
n := rand.Intn(100)
fmt.Printf("n=%d\n",n)
if n%13 == 0 {
fmt.Printf("player %s Missed\n", name)
close(court)
return
}
fmt.Printf("Player %s Hit %d\n", name, ball)
ball++
//将球打向对手
court <- ball
}
}
最新文章
- android AES 加密
- SSL/TLS协议运行机制
- python操作sqlite数据库
- SQLServer2005数据导入Mysql到详细教程
- poj2187 Beauty Contest(旋转卡壳)
- 用BFS和DFS解决圆盘状态搜索问题
- django笔记整理
- 将JSON格式数据转换为javascript对象 JSON.parse()
- element ui 上传图片
- Java中选择排序,冒泡排序,插入排序,快速排序
- Python自学:第二章 删除空白
- SpringCloud入门之Maven系统安装及配置
- 【Git】删除某个全局配置项
- 2018.09.29 bzoj3885: Cow Rectangles(悬线法+二分)
- Linux Shell常用技巧(七)
- 8-[CSS]-选择器
- 【BZOJ4003】[JLOI2015]城池攻占 可并堆
- CentOS下Supervisor的安装与使用入门
- Maven 构建Spring-Boot工程报错
- centos 系统管理维护指南
热门文章
- Linux 常见压缩格式详解
- 用Jmeter做性能测试,之后报表展示
- 软工作业-----Alpha版本第一周小结
- kali系统无法使用ll命令
- 神经网络(2)---neurons and the brain
- sql 索引的使用 转载:https://www.cnblogs.com/xiaoyangjia/p/11267191.html#mysql_performance
- redis 事务 &; 锁
- DOM属性获取、设置、删除
- GO语言基本数据类型
- 题解 [51nod1340]地铁环线