Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 使用CompareAndSwapInt32同步.Once.Do()_Go - Fatal编程技术网

Go 使用CompareAndSwapInt32同步.Once.Do()

Go 使用CompareAndSwapInt32同步.Once.Do(),go,Go,Go实现了如下功能: 我试图理解这里对互斥体的需求,将它实现为这样会有什么问题 func (o *Once) Do(f func()) { if atomic.CompareAndSwapUInt32(&o.done, 0, 1) { f() } } 删除互斥会中断以下操作之一: 在对f的一个调用返回之前,不返回对Do的调用 func (o *Once) Do(f func()) { if atomic.CompareAndSwapUInt32(&o.don

Go实现了如下功能:

我试图理解这里对互斥体的需求,将它实现为这样会有什么问题

func (o *Once) Do(f func()) {
  if atomic.CompareAndSwapUInt32(&o.done, 0, 1) {
    f()
  }
}

删除互斥会中断以下操作之一:

在对f的一个调用返回之前,不返回对Do的调用

func (o *Once) Do(f func()) {
  if atomic.CompareAndSwapUInt32(&o.done, 0, 1) {
    f()
  }
}