#multithreading #concurrency #c 11
#многопоточность #параллелизм #c 11
Вопрос:
Может ли кто-нибудь привести реальный пример std::this_thread::yield()
использования в приложении c ?
Ответ №1:
Я использовал yield в реализации std::lock, найденной здесь:
http://llvm.org/svn/llvm-project/libcxx/trunk/include/mutex
Оказывается, что при блокировке нескольких блокировок / мьютексов одновременно, когда вам не удается получить ни одной, вы можете сделать приложение быстрее, используя yield, прежде чем пробовать блокировки / мьютексы в другом порядке.
В этом исходном коде я на самом деле вызываю sched_yield()
. Но это только для того, чтобы получить зависимость заголовка так, как я этого хотел. На этой платформе std::this_thread::yield()
это не что иное, как вызов sched_yield()
:
http://llvm.org/svn/llvm-project/libcxx/trunk/include/thread