2016-04-12 22 views
0

durum makinesinin ilk durumu bir olayı bekler, olay belirli günlerde gerçekleşmezse, durum makinesi ikinci duruma geçer. Olay periyodda gerçekleşirse, durum makinesi üçüncü duruma geçer.Golang, zamanlayıcı veya goroutine döngüsünde sona erene kadar etkinliği beklemenin en iyi yolu hangisidir?

İki seçeneğim var: 1, Bir zamanlayıcı kullanın. Belirli günler olarak bir zamanlayıcı ayarlayın. Süre dolduğunda, kontrol olayın gerçekleşip gerçekleşmediğini kontrol eder. Olduysa üçüncü duruma geçin. Değilse, ikinci duruma geçin. Bu dönemde binlerce zamanlayıcının oluşması mümkündür.

2, Bir döngü ile rutin kullanın. Bir döngü çalıştırmak için bir rutin başlatın. Her yarım saatte, goroutine olayın olup olmadığını kontrol eder. Etkinlik gerçekleştiyse üçüncü duruma geçin. Diğerleri, belirli günleri doldurana kadar döngü tutun, ardından ikinci duruma geçin.

Soruma soru time.Timer vs goroutine, bu dava için daha fazla uygun mu?

cevap

1

Belirli bir zaman diliminden bahsettiğinize göre, verilen ikisinden, muhtemelen ikinci seçenekle gitmelisiniz. Bu sayede durumu bir dosyaya (veya veritabanına) kaydedebilir ve gerekirse işlemi yeniden başlatabilirsiniz. İlk seçenek, devleti depolamayı daha zor ama yine de mümkün kılıyor.