go并发:用channel实现锁定

一,怎么用channel实现锁定?

    只有1个缓冲区的channel,
    写入数据类似于加锁,
    读出数据类似于释放锁

二,代码例子:

// 入口函数
func main() {//创建channel对象ch:=make(chan int,1)//协程1go func() {ch <- 0  for i:=1; i<=5; i++ {time.Sleep(time.Millisecond)fmt.Println(i)}<-ch}()//协程2go func() {ch <- 0for i:=1; i<=5; i++ {time.Sleep(time.Millisecond)fmt.Println(i*10)}<-ch}()time.Sleep(time.Second)
}

三,测试效果:

加锁情况

$ go run main.go 
10
20
30
40
50
1
2
3
4
5

不加锁时:

$ go run main.go 
1
10
20
2
3
30
40
4
5
50

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/895897.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P1219 [USACO1.5] 八皇后 Checker Challenge

题目描述 一个如下的 $6 \times 6$ 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 $2\ 4\ 6\ 1\ 3\ 5$ 来描述,第 $i$ 个数字表示在第 $i$ 行的相应位置有一个棋子,…

专业代加工公司预览-芯晨微纳(河南)光电科技有限公司

一提“代加工”,很多人不自觉的会有几个误区,认为代工就是粗制滥造、没有技术创新,夹缝中求生存。 实际上,代加工也属于技术密集型、设备密集型产业,能为各种企业解决“无设备、无技术、无资金、与工人”等诸多问题,配合企业完成各种验证和测试,称得上企业的最大帮手。 …

JavaWeb学习(八)

JavaWeb学习(八):Web后端开发 —— Spring 目录JavaWeb学习(八):Web后端开发 —— Spring概念SpringBootWeb 快速入门 本文为个人学习记录,内容学习自 黑马程序员概念Spring 是全世界最流行的 Java 框架,它使得 Java 程序更快、更方便、更安全 Spring 提供了多个子项目…

P3629 [APIO2010] 巡逻

P3629 [APIO2010] 巡逻 看题解大佬们都用数学推理求两遍直径的方法,然而萌新并不会这么高级的方式,只能大力分讨了。 思路 对于 \(k=1\) 的情况,加上一条边时,树上出现了一条环且长为 \(S\),环上的原路径都可以少走一遍,再算上新路径要走一遍。此时答案为 \(2 \times (n-…

python——常用函数map、lambda

lambda:英文含义是,希腊字母表第11个字母 https://baijiahao.baidu.com/s?id=1781168343754714555&wfr=spider&for=pc

全面的C#/.NET/.NET Core面试宝典(永久免费)

前言C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习、携手进步。该知识库主要由自己平时学习和工作实践总结、网上优秀文章资料收集(这一部分一定会标明来源)和社区小伙伴提供三部分组成。 面试宝典获取方式因…

20241909 2024-2025-2《网络攻防实践》第2次作业

@目录1. 知识点梳理与总结1.1实验要求1.2知识点总结2. 实验过程2.1 实验环境2.2 详细实验过程2.2.1查询baidu.com2.2.2 查询某一好友的IP地址,地理位置2.2.3 使用nmap开源软件对靶机环境进行扫描,回答以下问题并给出操作命令。2.2.4 使用Nessus开源软件对靶机环境进行扫描,回…

dify跨域问题

在本地电脑上,通过vmware安装dify使用时,没有遇到这个问题。 部署dify之后,在添加模型的API-key的时候,一直添加不上,没有反应。打开控制台报错截图如下:报错信息 - Access to fetch at https://marketplace.dify.ai/api/v1/plugins/search/advanced from origin http://…

Program1

实验1 实验1代码 p1: #include<stdlib.h>int main() {printf(" o \n");printf("<H>\n");printf("I I\n");printf(" o \n");printf("<H>\n");printf("I I\n");system("pause");retur…

C#之BitConverter.ToInt16

byte[] bytes = {1,3 }; short s = BitConverter.ToInt16(bytes,0); Console.WriteLine(s);从低位到高位填充: 0000 0003 0000 0001 3*2^8+1=769;byte[] bytes ={0x21,0x31};short s = BitConverter.ToInt16(bytes,0);Console.WriteLine(s);从低位到高位填充: 0003 0001 0002…

大语言模型中的归一化技术:LayerNorm与RMSNorm的深入研究

在LLama等大规模Transformer架构的语言模型中,归一化模块是构建网络稳定性的关键组件。本文将系统分析归一化技术的必要性,并详细阐述为何原始Transformer架构中的LayerNorm在LLama模型中被RMSNorm所替代的技术原理。https://avoid.overfit.cn/post/224e11d8a7d84870b1a3d5e7…

nginx 403

其实大多数403错误,都主要是因为 nginx 没有网站资源目录的权限,所以为了安全起见,我们通常都不会将 nginx工作用户改成 root,而是去赋予网站资源目录权限 我们先去看下网站资源目录的权限都是777权限,这是因为我之前给它提权过。 咦不对啊,明明已经改成777权限了,怎么还…