в зависимости от ОС?
Это sched_yield (на практике и по смыслу)
это гипотетическая просьба направленная абстрактному шедулеру спланировать другой поток, поскольку this_thread закончил работу и пока ему нечем заняться. результатом может быть, что планировщик спланирует этот же поток, если других с таким же приоритетом не будет
У меня щас вот так реализовано, этого достаточно или мне нужно указать еще и специфику платформ линуксовых? У меня по сути библиотека поддерживает только linux и windows (64 битки) #if defined(HELENA_COMPILER_CLANG) || defined(HELENA_COMPILER_GCC) #define HELENA_PROCESSOR_YIELD() __builtin_ia32_pause() #else #define HELENA_PROCESSOR_YIELD() _mm_pause(); #endif
Нужно ли проверять какая ОС? Может у каждой платформы своя специфика вызова
Зачем этот макрос?
Для спинлока
Посмотри в сорцы MSVC. _mm_pause он юзает только на x86
Это ко мне вопрос или к MS?
видимо спрашивать чем не устроил this_thread::yield бесполезно, т.к. он слишком медленный?
Для спинлока не годится
Зачем ты пишешь спинлок?)
https://rigtorp.se/spinlock/
На провокационные вопросы не отвечаю
Я оттуда и посмотрел реализацию
Так он не провокационный
ладно, я просто с конца читаю, поэтому вопроса не видел
Спинлоки в юзерспейсе - крайне странная вещь
Обсуждают сегодня