2016-06-17 8 views

Odpowiedz

14

Nie sądzę, że ma to znaczenie dla większości programów. Nie było question on golang-nuts about this, ale nie sądzę, można wyciągnąć żadnych wniosków.

W praktyce After jest przydatna w sytuacjach, w których jeden już potrzebnych do select na kilku kanałach, lecz także jak timeout:

select { 
case c := <-someChan: 
    .. 
case c := <-otherChan: 
    .. 
case <-time.After(time.Second * 42): 
} 

Przez powierzchownie patrząc na kod Sleep wydaje się prostsze, gdy After buduje nowy timer, z okresem, zamknięciem, aby wysłać czas, kiedy kończy się itp.

Ponownie, nie sądzę, aby miało to znaczenie w praktyce, ale time.Sleep wydaje się dość czytelne, więc chciałbym z tym.


Na moim realizację obu z nich wykonać dokładnie ten sam system połączeń i skończyć oczekujące:

futex(??, FUTEX_WAIT, 0, {41, 999892351} 
          ^^ 41 seconds and change