Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

std::this_thread::yield() usage?

Can someone provide real-life example of std::this_thread::yield() usage in c++ application?

like image 686
Predrag Avatar asked Apr 09 '11 09:04

Predrag


1 Answers

I used yield in the implementation of std::lock, found here:

http://llvm.org/svn/llvm-project/libcxx/trunk/include/mutex

It turns out that when locking multiple locks/mutexes at a time, when you fail to get one, you can make the application faster by using yield prior to trying the locks/mutexes in a different order.

In this source code I'm actually calling sched_yield(). But that is only for the purpose of getting the header dependency the way I wanted it. On this platform std::this_thread::yield() is nothing more than a call to sched_yield():

http://llvm.org/svn/llvm-project/libcxx/trunk/include/thread

like image 58
Howard Hinnant Avatar answered Nov 12 '22 00:11

Howard Hinnant