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

被折叠的 条评论
为什么被折叠?



