Size: a a a

IT KPI C/C++ ХВ (не UB)

2021 February 25

W

We all wanna be some... in IT KPI C/C++ ХВ (не UB)
Ruslan Neshta
у тебя idx будет в разных потоках меняться, так?
Спрощено в мене такий код. Я хочу гарантувати, що будуть всі індекси на проміжку(можна не послідовно), і кожен рівно одного разу
atomic_int64_t idx;
vector<future<void>> ftrs;
for(int i = 0; i < 2; i++)
   ftrs.push_back(async([&idx]{
       int64_t local_idx = idx++;
       osyncstream(cout) << local_idx << '\n';
   }))
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
ты мог просто написать да в ответ на мой вопрос выше
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
да, изменение idx будет видно во всех потоках и оно будет атомарным
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
я имел ввиду тот факт что на некоторых платформах атомики могут быть не атомиками из-за модели памяти что позволяет этт
источник

W

We all wanna be some... in IT KPI C/C++ ХВ (не UB)
Ruslan Neshta
да, изменение idx будет видно во всех потоках и оно будет атомарным
окей, а чи гарантує це те, що в любий момент часу local_idx різних потоків завжди різний?
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
блять
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
у меня щас пригорит
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
смылс в синке!
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
чтоб он был одинаков
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
ало
источник

RN

Ruslan Neshta in IT KPI C/C++ ХВ (не UB)
я всё
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
We all wanna be somebody
Спрощено в мене такий код. Я хочу гарантувати, що будуть всі індекси на проміжку(можна не послідовно), і кожен рівно одного разу
atomic_int64_t idx;
vector<future<void>> ftrs;
for(int i = 0; i < 2; i++)
   ftrs.push_back(async([&idx]{
       int64_t local_idx = idx++;
       osyncstream(cout) << local_idx << '\n';
   }))
вообще тут нет гарантии на порядок инициализации, но обратного поведения достичь достаточно сложно
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
то есть теоретически может произойти ситуация которые ты описал, сначала произойдет две инициализации, а потом только инкременты
источник

VT

Vladislav Tolstikov in IT KPI C/C++ ХВ (не UB)
но из-за приминивность инструкций scheduler скорее всего это заоптимизировал и такое поведение не совсем отловишь
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
крч, я решил делать что-то каждый день
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
пока грустно...
источник

q

qwerty in IT KPI C/C++ ХВ (не UB)
один день забухал и все
источник

KS

Kyryl Sydorov in IT KPI C/C++ ХВ (не UB)
qwerty
крч, я решил делать что-то каждый день
жиза(
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
У тру кодеров там пикселями хуй пишет
источник

AP

Alexander Pavlyuchuk in IT KPI C/C++ ХВ (не UB)
Гордо показывал бы такой на собесах
источник