Size: a a a

2020 October 08

AK

Andrei K in pro.cxx
Но даже с std::condition_variable нотифай не надо вызывать из под лока. Из под лока надо только обновлять условие просыпания.
источник

AK

Andrei K in pro.cxx
В целом, если у вас условие — это атомик, то вам вообще не особо подходит std::cv
источник

AK

Andrei K in pro.cxx
Нужен отсутсвующий в стандарте yield
источник

A

Alex in pro.cxx
disba1ancer
Наверное, потому что под капотом мьютекс и простая переменная может быть, и роль того, что держит поток в состоянии сна, выполняет мьютекс
Была такая мысль, но тогда весь объект cv должен про этот мьютекс знать, т. е. он должен был бы передаваться в конструктор, а не только в wait()
источник

A

Alex in pro.cxx
Andrei K
В целом, если у вас условие — это атомик, то вам вообще не особо подходит std::cv
мне очень подходит std::cv :)
источник

d

disba1ancer in pro.cxx
Alex
Была такая мысль, но тогда весь объект cv должен про этот мьютекс знать, т. е. он должен был бы передаваться в конструктор, а не только в wait()
Не нормально всё
источник

A

Alex in pro.cxx
мне не подходят только навязываемые и плохо описанные костыли
источник

d

disba1ancer in pro.cxx
Alex
Была такая мысль, но тогда весь объект cv должен про этот мьютекс знать, т. е. он должен был бы передаваться в конструктор, а не только в wait()
Он знает о нём на стеке другого не надо
источник

AK

Andrei K in pro.cxx
Cv внутри не лочит ничего.
источник

d

disba1ancer in pro.cxx
Andrei K
Cv внутри не лочит ничего.
Это почему?
источник

A

Alex in pro.cxx
я так понимаю, что cv делает не lock(), а unlock()
источник

A

Alex in pro.cxx
disba1ancer
Он знает о нём на стеке другого не надо
на стеке единственного потока? В частном случае, когда он один. Зачем??
источник

AK

Andrei K in pro.cxx
CV — это простой механизм, который на wait говорит диспетчеру понизить приоритет треду, а на notify говорит диспетчеру заскедюлить спящие треды.
источник

AK

Andrei K in pro.cxx
То что его там в c++ совместили с локом — это уже чисто фишка стандарта.
источник

A

Alex in pro.cxx
ну какая-то логика же должна в этом быть
источник

AK

Andrei K in pro.cxx
Ну логика такая, что этот примитив называется condition_variable
источник

AK

Andrei K in pro.cxx
Он подразумевает “condition”
источник

AK

Andrei K in pro.cxx
В 20м стандарте есть более гибкие и легковесные механизмы
источник

A

Alex in pro.cxx
ну так у меня и есть condition, он атомик, зачем выкручивать мне руки мьютексом
источник

AK

Andrei K in pro.cxx
Latch, barrier, binary_semaphore
источник