一个不可重入的函数就是一个在任何时间点只能执行一次的函数,不管它被调用了多少次,以及有多少goroutines。本篇文章说明了阻塞不可重入函数,并在golang中产生不可重入的函数实现。某个服务是对某些条件进行轮询,每秒监视一些状态。我们希望每个状态都可以独立地检查,而不需要阻塞。实现可能是这样的:我们选择在自己的goroutine中运行每个状态检查,以便 每一项检查通常都要花费很短的时间,而且比一秒要少得多。但是,如果在同一时间执行两次的函数是否有意义?如果没有,我们希望它是不可重入的。防止函数多次运行的简单方法是使用假设我们只关心从上面的循环调用这个函数,我们可以从函数外面实现锁:上面的代码保证了。另外,对于 int64 而言,int32当然也足够用。

Golang教程之不可重入函数的实现方法

Golang教程之不可重入函数的实现方法

Golang教程之不可重入函数的实现方法