Golang面试题目-并发题目(选择题)

1、阅读下例代码,从以下四个选项中选择代码执行结果(Mutex相关)。

package mainimport (  "fmt"  "sync")var mu sync.Mutexvar chain stringfunc main() {
  
    chain = "main"  A()  fmt.Println(chain)}func A() {
  
    mu.Lock()  defer mu.Unlock()  chain = chain + " --> A"  B()}func B() {
  
    chain = chain + " --> B"  C()}func C() {
  
    mu.Lock()  defer mu.Unlock()  chain = chain + " --> C"}

选项如下:

  1. 不能编译

  2. 输出main-->A-->B-->C

  3. 输出main

  4. panic

解析:4。上述代码会产生死锁panic,因为Mutex是互斥锁。

2、阅读下例代码,从以下四个选项中选择代码执行结果(RWMutex相关)。

package mainimport (  "fmt"  "sync"  "time")var mu sync.RWMutexvar count intfunc main() {
  
    go A()  time.Sleep(2 * time.Second)  mu.Lock()  defer mu.Unlock()  count++  fmt.Println(count)}func A() {
  
    mu.RLock()  defer mu.RUnlock()  B()}func B() {
  
    time.Sleep(5 * time.Second)  C()}func C() {
  
  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luyaran

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值