Size: a a a

2020 April 23

AE

Andrey Enshin in Go-go!
@Lokot_anatoly a - структура
т.е. любое чтение и изменение, даже разных полей структуры, считается гонкой?
источник

C

Calculon in Go-go!
Andrey Enshin
@Lokot_anatoly a - структура
т.е. любое чтение и изменение, даже разных полей структуры, считается гонкой?
чтение гонкой не считается
источник

C

Calculon in Go-go!
Только если ты не читаешь пока кто-то пишет
источник

AE

Andrey Enshin in Go-go!
попрошу прочитать ещё раз
источник

C

Calculon in Go-go!
Andrey Enshin
попрошу прочитать ещё раз
Какая разница с какими полями работать
источник

C

Calculon in Go-go!
Ну тут правда играет роль имутабельности
источник

C

Calculon in Go-go!
Короче реально загугли чувак
источник

AE

Andrey Enshin in Go-go!
ну как это какая?

-race мне адреса показывает одни и те же:
Write at 0x00c000192090 by goroutine 15:
..
Previous read at 0x00c000192090 by goroutine 21:


а разные поля структуры разве могут лежат по одним адресам?
источник

C

Calculon in Go-go!
Andrey Enshin
ну как это какая?

-race мне адреса показывает одни и те же:
Write at 0x00c000192090 by goroutine 15:
..
Previous read at 0x00c000192090 by goroutine 21:


а разные поля структуры разве могут лежат по одним адресам?
Разные поля структуры не могут лежать по одним адресам
источник

C

Calculon in Go-go!
Блин я когда юзал рейс детектор он мне указывал в каком месте в коде гонка происходит
источник

C

Calculon in Go-go!
Искать рейсы по адресам в памяти это сомнительное занятие имхо
источник

IK

Ilya Kaznacheev in Go-go!
Господа, есть здесь пользователи ginkgo?
Подскажите, как вы используете тул для тестов?

Как организуете тестовые случаи, как вообще строите тест?
Если с примерами, то вообще супер
источник

IK

Ilya Kaznacheev in Go-go!
Возможностей у него много, а как лучше использовать - не очень хорошо понятно
источник

ЛА

Локоть Анатолий... in Go-go!
Ilya Kaznacheev
Господа, есть здесь пользователи ginkgo?
Подскажите, как вы используете тул для тестов?

Как организуете тестовые случаи, как вообще строите тест?
Если с примерами, то вообще супер
У меня есть пример теста на нем, то не писал и разбираюсь поверхностно.
Вызывается функция Context с лямбдой,  внутри которой нее несколько вызовов It тоже с лямбдами - в них уже вызовы тестируемой сущности и вызовы Expect.

Как я понимаю Context это группа тестов, It это один тест в ней. Ну и проверки результаты, ошибок тоже через эту либу.
источник

ЛА

Локоть Анатолий... in Go-go!
И весь файл теста это много Context с It в них.

Да, ещё щас только увидел, что контексты тоже в лямбде, которая передается а Describe метод. Он похоже и вызывает тесты.
источник

AE

Andrey Enshin in Go-go!
@Calculon666 , @Lokot_anatoly хех, решил

спрятал все внутренности аккаунта в отдельном типе-структурке, который замкнул в горутине описанное в Open, а наружу вернул только канал для общения

кажется, действительно любое обращение к структуре является гонкой, даже в разные поля
источник

а

а кто это in Go-go!
вы ее еще по ссылке передаете
источник

p

pragus in Go-go!
Andrey Enshin
@Calculon666 , @Lokot_anatoly хех, решил

спрятал все внутренности аккаунта в отдельном типе-структурке, который замкнул в горутине описанное в Open, а наружу вернул только канал для общения

кажется, действительно любое обращение к структуре является гонкой, даже в разные поля
ожидаемо же
источник

AE

Andrey Enshin in Go-go!
ага, а ещё есть второе решение - изменить сигнатуру Close():

c
func (a Account) Close() (payout int64, ok bool)
на
func (a *Account) Close() (payout int64, ok bool)

когда ресивер не по ссылке, го передаёт его копию в метод и вот именно тогда трогает все поля : )
источник

AE

Andrey Enshin in Go-go!
но первое мне нравится больше - лучше спрятать
источник