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?:)

Спасибо

0 ответов

Другие вопросы по тегам