TCP net.Conn крайний срок
Я пытаюсь обработать серверные операции TCP net.Conn внутри одной программы и разблокировать операцию чтения из другой программы через SetDeadline. Давайте опишем это с помощью упрощенного фрагмента (без объявлений и т. Д.).
c.isAlive () восстанавливает SetDeadline по умолчанию (30 минут), если err является типом Timeout. В противном случае верните err == ноль.
go func() {
for job := range jobBufferQ {
jobDoneBufferQ <-doSomethingWith(job)
c.SetDeadline(time.Now().Add(time.Duration(200) * time.Millisecond)
if isSync(job) {
c.wait <- struct{}{}
}
}
}
for c.isAlive(err) {
select {
case bytes := <-c.jobDoneBufferQ:
c.Write(bytes)
default:
}
job, err = c.ReadLine()
if err != nil {
continue
}
jobBufferQ <- job
if isSync(job) {
<-c.wait
}
}
Вопрос: что происходит, когда установлен крайний срок, а Reader просто читает байты из ввода? Это сбрасывает крайний срок? Считается ли c.SetDeadline (time.Now ()) как прошедший и вызывает ошибку независимо от того, что читает Reader? И, наконец, это путь к GO?:)
Спасибо