Size: a a a

2020 April 29

RS

Roman Sharkov in Go-go!
Геннадий Ковалёв
Тэк тэк. Чё там про встроенный мьютекс? Почему глаз дёргается?
mutex это деталь имплементации объекта

экпортирование методов Locker интерфейса нарушает принцип инкапсулирования и может привести к печальным последствиям, каким именно, надеюсь, объяснять не надо.

если мы говорим о структуре, которая экспортирует все свои свойства наружу включая Mutex, то в данном случае подход можно интерпретировать как “Вот вам куча всяких штучек, а как ей правильно пользоваться - догадайтесь сами”. Это было бы приемлимо, если бы в Go не существовало private полей и методов, но они есть и существуют не зря.

следственно, встраивание Mutex’ов можно считать плохой идеей
источник

SS

Stanislav Sagan in Go-go!
Нельзя пользоваться мутексами до чтения про дедлоки) Хотя бы в вики
источник

ЗА

Заур Ашурбеков... in Go-go!
Roman Sharkov
func (s ExampleImplementation) DestroySession(
 ctx context.Context,
 id SessionID,
 checkOwner func(actualOwner UserID) error,
) error {
 t := db.NewTransaction()
 s := t.Query(“session {owner, …} where id = %s”, id)
 if err := checkOwner(s.Owner); err != nil {
   return err
 }
 t.Mutate(“delete “session where id = %s”, id)
 return t.Commit()
}
и сильно ты тут выиграешь? две транзакции vs два запроса в транзакции с проверками в середине + заморочки с интерфейсом
источник

ЗА

Заур Ашурбеков... in Go-go!
хочешь тру перфоманс? пиши процедуру на проверку прав в бд во время удаления и чекай им прямо в бд всё 😂
источник

АП

Александр Попов... in Go-go!
все такие меня тут не отпускает с этим броткастом на воркеров :)
источник

АП

Александр Попов... in Go-go!
смущает что надо копировать получается данные в несколько каналов (у каждого воркера свой)
источник

АП

Александр Попов... in Go-go!
хотя обычно там кейс - копейки
источник

VM

Vladislav Milenin in Go-go!
Roman Sharkov
Вобщем, как-то так: https://play.golang.org/p/uxGToUqwQ2m

Take - синхронно взять
SubscribeQueue - асинхронно, когда будут (очередь). Тут каналы и используем

P.S.
тесты не писал, исправную функциональность не гарантирую
Реализация интересная на первый взгляд

В моем случае кода меньше и все работает, руки дойдут разберу ваш) Спасибо
источник

ЗА

Заур Ашурбеков... in Go-go!
Александр Попов
все такие меня тут не отпускает с этим броткастом на воркеров :)
А ну ка 😀 выноси-ка таск на суд толпы
источник

j

jackson4800 in Go-go!
Извиняюсь за тупой вопрос. В голанге, если, допустим, у меня есть массив d
и я юзаю такой код:

firstThunk := d[dt.FirstThunk - ds.VirtualAddress:]
firstThunk[0] = 13

d изменится? Если нет, то как сделать так, чтобы изменился?
источник

ЗА

Заур Ашурбеков... in Go-go!
jackson4800
Извиняюсь за тупой вопрос. В голанге, если, допустим, у меня есть массив d
и я юзаю такой код:

firstThunk := d[dt.FirstThunk - ds.VirtualAddress:]
firstThunk[0] = 13

d изменится? Если нет, то как сделать так, чтобы изменился?
Изменится
источник

j

jackson4800 in Go-go!
Хорошо, спасибо.
источник

VM

Vladislav Milenin in Go-go!
jackson4800
Извиняюсь за тупой вопрос. В голанге, если, допустим, у меня есть массив d
и я юзаю такой код:

firstThunk := d[dt.FirstThunk - ds.VirtualAddress:]
firstThunk[0] = 13

d изменится? Если нет, то как сделать так, чтобы изменился?
В go мапы, слайсы и массивы - ссылочный тип
источник

j

jackson4800 in Go-go!
Я все время думал что при юзании кода типа arr[... : ...] там делается копия.
источник

VM

Vladislav Milenin in Go-go!
Не знаю языков в которых слайсинг работал бы как копирование
источник

j

jackson4800 in Go-go!
Еще не привык к таким языкам.)
источник

VM

Vladislav Milenin in Go-go!
Каким таким? Во всех языках слайсинг != копирование
источник

а

а кто это in Go-go!
не во всех языках есть слайсинг
источник

VM

Vladislav Milenin in Go-go!
а кто это
не во всех языках есть слайсинг
Бесполезное уточнение тк очевидно речь о тех где есть
источник

АП

Александр Попов... in Go-go!
Заур Ашурбеков
А ну ка 😀 выноси-ка таск на суд толпы
да это стардартный вопрос на собесах "есть гора воркеров, как туда брокастом послать сообщение"
источник