Size: a a a

2021 June 11

MK

Max Kot in Go-go!
Хм...
источник

MK

Max Kot in Go-go!
Кстати да
источник

MK

Max Kot in Go-go!
Отправка происходит конкурентно
источник

MK

Max Kot in Go-go!
А как подобное исправить?
источник

VY

Vladislav Yarmak in Go-go!
под мьютекс разве что
источник

MK

Max Kot in Go-go!
А каким образом? 🙁
источник

MK

Max Kot in Go-go!
источник

VY

Vladislav Yarmak in Go-go!
лучше всего обернуть bufio.Writer в другой объект, который бы дёргал соответствующие методы райтера, но при этом лочил бы мьютекс внутри себя
источник

AE

Alexey Ermakov in Go-go!
а он не надолго лочится? а то будут все рутины висеть ждать
источник

MK

Max Kot in Go-go!
Получается только на отправку и чтение будет
источник

MK

Max Kot in Go-go!
Поидеи нет
источник

VY

Vladislav Yarmak in Go-go!
там всё равно в большинстве случаев будет просто запись либо в собственный буфер, либо в буфер ОС на отправку
источник

VY

Vladislav Yarmak in Go-go!
во втором случае задержка может быть
источник

VY

Vladislav Yarmak in Go-go!
а горутины и подождать могут, почему бы нет
источник

AE

Alexey Ermakov in Go-go!
понял, я только учусь - вопрос интересный =)
источник

MK

Max Kot in Go-go!
Я правильно понял?

func (writer Writer) Write(p []byte) (n int, err error) {
 writer.rwMutex.Lock()
 n, err = writer.conn.Write(p)
 writer.rwMutex.Unlock()

 return n, err
}
источник

AE

Alexey Ermakov in Go-go!
ну, просто ждать отправку по сети, мне кажется, долго
попеременно в 2 буфера писать - пока один отправляет, второй свободен для записи - так не получится? или это оверинжиниринг и вообще неправильный подход?
источник

VY

Vladislav Yarmak in Go-go!
да, типа того. только анлок лучше в дефер убрать и прям можно сделать return writer.conn.Write(p)
источник

MK

Max Kot in Go-go!
Уже))
источник

VY

Vladislav Yarmak in Go-go!
где rwMutex, если это чисто райтер, можно обычный Mutex который sync.Mutex
источник