2015-01-30 12 views
5

bir engelleme işlemi iptal. Potansiyel olarak sonsuza gidebiliriz. Bu yüzden üzerinde bir zaman aşımı kurmak istiyorum. bariz yolu kanal ve bir goroutine ile sarın ve daha sonra time.After ile sonuca seçmektir. Ancak, sorun potansiyel olarak sonsuza gidebiliriz engelleme işlemini çalıştıran goroutine olduğunu. İşte ben kontrol etmiyoruz bir 3. parti kütüphanesinde bir engelleme işlemi var git

bu http://repl.it/90o

bir goroutine iptal veya gereksiz toplanan için bir yolu var mı göstermek için bir örnektir?

+2

üçüncü parti kütüphane açık kaynak var mı? Belki onlar için bu sorunu gidermek ve bir çekme isteği gönderebilirsiniz. – tgrosinger

cevap

3

Sen "dışarıda" bir goroutine durduramaz. goroutine sonlandırma sinyallemesinin bir tür (genellikle bir kanal) desteklemek için yer alır. öyle değil Ama eğer zorlamak ya da öldüremem.

size kullandığınız 3. parti lib hakkında bir şey yapamaz ise, öldürebilir (sizin go uygulama tarafından başlatılan farklı bir uygulamada) Farklı bir süreçte bunu çalıştırılan yapabileceği çoğu, ama bu sadece çirkin ve çok hantal.

0

ben her şeyi yapabilirsin sanmıyorum. Git sen dışından goroutine durduramaz. Bu kütüphaneyi düzeltemez ve bunu sonsuza engellemek düşünüyorum, o zaman kontrol etmek mümkün olacaktır yenisini yazın.

İlgili konular