170 похожих чатов

В чужую область не залезет, ничего не попортит. Иногда не важна

прям такая строгость, например для использования просто как флаг.
Итак го даёт возможность писать в переменную из горутин, но даёт при это хоть где нибудь гарантии thread-safity?

7 ответов

18 просмотров

happens before?

Дмитрий-Спиридонов Автор вопроса

Про happens before задавал этот вопрос 3 дня назад, никто так и не ответил, но уже разобрался =) Так вот, про map написали конкретно что нельзя, но про другие типы под вопросом. Есть какие то гарантии в стандарте, описании?

Простой ответ на это - юзайте -race флаг, это включит рейс детектор и он уже кинет ворнинги. Конкурентная запись + чтение/запись любой переменной = гонка данных, даже если эта переменная скрыта в исходниках го. Конкурентное чтение - не гонка.

Elmanov Anton
Простой ответ на это - юзайте -race флаг, это вклю...

Про чтение - были причудливые платформы. Моё любимое: The short version is that Alpha requires memory barriers for readers as well as updaters of linked data structures. Yes, this does mean that Alpha can in effect fetch the data pointed to before it fetches the pointer itself, strange but true.

Дмитрий-Спиридонов Автор вопроса
Elmanov Anton
Простой ответ на это - юзайте -race флаг, это вклю...

Я не совсем про барьеры памяти. Например на c++ собираешь ты данные из внешней системы и кладёшь в строку и отдельный поток иногда запрашивает значение строки. Строки через указатели поэтому просто создаёшь новый буфер с ново строкой и меняешь указатель. Тут не важна гонка памяти. Даже если команда записи в память уже выполнена но оно реально туда не поместилось, там будет предыдущее значение что тоже устроит. +- пару тактов, по сети это всё равно получено с задержкой. И мьютексы и прочие синхронизации тут лишние.

в том то и дело, что попортит

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта