использование std::this_thread::yield()?

#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