cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
88 stars 0 forks source link

Добавление spinlock #445

Open Roman-Koshelev opened 3 years ago

Roman-Koshelev commented 3 years ago

В С++20 добавили барьеры и семафоры. Почему спинлок опять обошли? Непонятно...

Думаю каждый велосипедил свой спинлок (через pthread_spin или std::atomic_flag. А теперь вообще можно через std::atomic::wait)

apolukhin commented 3 years ago

https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723

"First off, spinlocks can only be used if you actually know you're not being scheduled while using them."

Нужны очень веские аргументы и убедительные бенчмарки, что именно spinlock эффективен для решения некоторых задач. Именно он, а не std::atomic::wait, транзакционная память или lockfree.

У меня таких аргументов и бенчмарков нет.

Roman-Koshelev commented 3 years ago

А при чем здесь эффективность? Очевидно он не будет лучше atomic::wait, но он точно используется в каждом проекте и каждый велосипедит как может. Разве этого не достаточно чтобы быть в стандарте?

apolukhin commented 3 years ago

Зачем добавлять плохие вещи, если можно добавлять хорошие?

Roman-Koshelev commented 3 years ago

Надо добавлять распространённые вещи которые всеми используются. Да и то что спинлок "плохая вещь" очень спорно. А зачем его повсеместно используют? У вас он не используется?

apolukhin commented 3 years ago

У нас он не используется, но это не важно.

Важно, что для принятия предложения международным комитетом нужна хорошая мотивация, доказательства что это полезная вещь.