1
A
回答
1
A channel提供了一個可用於協調的併發同步機制。您可以使用一個與time.Ticker
協調的定期分派給定數量的函數調用。
// A PeriodicResource is a channel that is rebuffered periodically.
type PeriodicResource <-chan bool
// The NewPeriodicResourcePool provides a buffered channel that is filled after the
// given duration. The size of the channel is given as count. This provides
// a way of limiting an function to count times per duration.
func NewPeriodicResource(count int, reset time.Duration) PeriodicResource {
ticker := time.NewTicker(reset)
c := make(chan bool, count)
go func() {
for {
// Await the periodic timer
<-ticker.C
// Fill the buffer
for i := len(c); i < count; i++ {
c <- true
}
}
}()
return c
}
單程序例程會等待每個ticker事件並嘗試將緩衝通道填充到最大容量。如果消費者沒有消耗緩衝區,則任何連續的滴答只會補充它。您可以使用該頻道同步執行最多ñ次/ 持續時間。例如,我可能想每秒鐘撥打doSomething()
不超過五次。
r := NewPeriodicResource(5, time.Second)
for {
// Attempt to deque from the PeriodicResource
<-r
// Each call is synchronously drawing from the periodic resource
doSomething()
}
當然,相同的信道可被用於每第二調用go doSomething()
這將風扇出至多過程。
相關問題
- 1. iptables規則將ICMP(Ping)流量速率限制爲每秒5個數據包
- 2. 每x秒數ping功能
- 3. Glassfish:限制用戶每秒/每分鐘的請求數量
- 4. 限制幀每秒
- 5. 限制事件偵聽器每秒可觸發的次數
- 6. 解析主機和每秒請求數
- 7. 限制用戶,使每秒
- 8. 如何計算在JSP中ping主機的次數?
- 9. Apache HttpClient:限制每秒總調用數
- 10. 如何限制每秒捲曲數php
- 11. Android OpenGL ES:每秒限制幀數
- 12. 如何衡量「每秒查詢次數」?
- 13. 如何限制apache2中每個虛擬主機的連接數量?
- 14. Azure函數 - Ping限制?
- 15. 的AutoHotkey - 遞減變量每秒一次
- 16. 限制C++中的更新速率。爲什麼這個代碼每秒更新一次不是每秒60次?
- 17. 如何限制使用Sungrid的主機上的作業數量?
- 18. 是每個MySQL用戶的mysql併發連接數限制或每個本地主機的限制
- 19. 從bash腳本ping未知主機ping
- 20. 每秒僅插入1次插入後的403次速率限制
- 21. 限制主機上已退出容器的數量(1.8.3)
- 22. Ejabberd發送和接收的數據包數量限制爲61每秒
- 23. 限制每個鍵值的數量
- 24. 批處理腳本每5秒鐘ping遠程計算機?
- 25. mininet:動態創建的主機不能ping其他主機,但主機可以ping交換機
- 26. 如何每次使用隨機數毫秒的setInterval?
- 27. Ping每秒鐘和Tkinter按鈕
- 28. Ruby腳本每30秒ping一個URL
- 29. 不能ping Hadoop主機名
- 30. c#限制每次迭代
請發佈一些代碼示例 –
請參閱:我如何在Golang中每秒執行多次命令:http://stackoverflow.com/questions/39385883/how-do-i-execute-commands-many-many -times每秒合golang – 2016-10-01 07:35:47