Go channel 测试题

本文探讨了Go语言中实现互斥锁的概念,通过案例分析了选项A如何使用无缓冲通道实现线程安全的计数器。同时,文章还介绍了管道的使用,包括读写nil管道和关闭管道的影响,以及在实际代码中的应用。最后,展示了通过通道实现并发安全计数的示例,输出了通道容量和未满情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下可以实现互斥锁的是?

// A
var counter int = 0
var ch = make(chan int, 1)

func Worker() {
   ch <- 1
   counter++
   <-ch
}

// B
var counter int = 0
var ch = make(chan int)

func Worker() {
	<-ch
	counter++
	ch <- 1
}

// C
var counter int = 0
var ch = make(chan int, 1)

func Worker() {
	<-ch
	counter++
	ch <- 1
}

// D
var counter int = 0
var ch = make(chan int)

func Worker() {
	ch <- 1
	counter++
	<-ch
}
答案:A
下面关于管道的描述正确的是?(单选)
A: 读nil管道会panic
B: 写nil管道会panic
C: 读关闭的管道会panic
D: 写关闭的管道会panic

答案 :D

下面函数输出什么?
func ChanCap() {
	ch := make(chan int, 10)
	ch <- 1
	ch <- 2
	fmt.Println(len(ch))
	fmt.Println(cap(ch))
}

答案:

2
10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值