signalling a condvar from inside vs. signalling a condvar von outside

Liste des GroupesRevenir à cl c++ 
Sujet : signalling a condvar from inside vs. signalling a condvar von outside
De : Bonita.Montero (at) *nospam* gmail.com (Bonita Montero)
Groupes : comp.lang.c++
Date : 12. Apr 2025, 16:23:16
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vte0g6$pmgv$1@raubtier-asyl.eternal-september.org>
User-Agent : Mozilla Thunderbird
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <sys/resource.h>
using namespace std;
int main()
{
struct synch_t
{
mutex mtx;
bool signalled = false;
condition_variable cv;
};
atomic_long nVoluntary;
auto thr = [&]( synch_t &me, synch_t &you, auto &&toYou )
{
for( size_t r = 10'000; r; --r )
{
unique_lock lockMe( me.mtx );
me.cv.wait( lockMe, [&] { return me.signalled; } );
me.signalled = false;
lockMe.unlock();
toYou( you );
}
rusage ru;
getrusage( RUSAGE_THREAD, &ru );
nVoluntary.fetch_add( ru.ru_nvcsw );
};
auto doIt = [&]( char const *what, auto &&toYou )
{
synch_t synchA { {}, true, {} }, synchB;
nVoluntary.store( 0, memory_order_relaxed );
jthread
thrA( [&]() { thr( synchA, synchB, move( toYou ) ); } ),
thrB( [&]() { thr( synchB, synchA, move( toYou ) ); } );
thrA.join();
thrB.join();
cout << what << nVoluntary.load( memory_order_relaxed ) << endl;
};
doIt( "inside: ", []( synch_t &synch )
{
lock_guard lock( synch.mtx );
synch.signalled = true;
synch.cv.notify_one();
} );
doIt( "outside: ", []( synch_t &synch )
{
unique_lock lock( synch.mtx );
synch.signalled = true;
lock.unlock();
synch.cv.notify_one();
} );
}
It nearly doesn't matter in terms of numbers of context switches if
you  signal a condvar from inside our outside. The above program run
on a Zen4-CPU with WSL2:
inside: 20130
outside: 19811
On a 28 core Skylake-CPU with Ubuntu:
inside: 19997
outside: 19888

Date Sujet#  Auteur
12 Apr 25 * signalling a condvar from inside vs. signalling a condvar von outside51Bonita Montero
12 Apr 25 `* Re: signalling a condvar from inside vs. signalling a condvar von outside50Chris M. Thomasson
13 Apr 25  `* Re: signalling a condvar from inside vs. signalling a condvar von outside49Bonita Montero
13 Apr 25   `* Re: signalling a condvar from inside vs. signalling a condvar von outside48Chris M. Thomasson
13 Apr 25    `* Re: signalling a condvar from inside vs. signalling a condvar von outside47Bonita Montero
13 Apr 25     `* Re: signalling a condvar from inside vs. signalling a condvar von outside46Chris M. Thomasson
15 Apr 25      `* Re: signalling a condvar from inside vs. signalling a condvar von outside45Bonita Montero
15 Apr 25       `* Re: signalling a condvar from inside vs. signalling a condvar von outside44Chris M. Thomasson
16 Apr 25        `* Re: signalling a condvar from inside vs. signalling a condvar von outside43Bonita Montero
16 Apr 25         `* Re: signalling a condvar from inside vs. signalling a condvar von outside42Chris M. Thomasson
17 Apr 25          `* Re: signalling a condvar from inside vs. signalling a condvar von outside41Bonita Montero
17 Apr 25           `* Re: signalling a condvar from inside vs. signalling a condvar von outside40Chris M. Thomasson
17 Apr 25            `* Re: signalling a condvar from inside vs. signalling a condvar von outside39Bonita Montero
17 Apr 25             `* Re: signalling a condvar from inside vs. signalling a condvar von outside38Chris M. Thomasson
18 Apr 25              `* Re: signalling a condvar from inside vs. signalling a condvar von outside37Bonita Montero
18 Apr 25               `* Re: signalling a condvar from inside vs. signalling a condvar von outside36Chris M. Thomasson
18 Apr 25                `* Re: signalling a condvar from inside vs. signalling a condvar von outside35Bonita Montero
19 Apr 25                 +* Re: signalling a condvar from inside vs. signalling a condvar von outside9Chris M. Thomasson
19 Apr 25                 i`* Re: signalling a condvar from inside vs. signalling a condvar von outside8Bonita Montero
19 Apr 25                 i `* Re: signalling a condvar from inside vs. signalling a condvar von outside7Chris M. Thomasson
19 Apr 25                 i  +- Re: signalling a condvar from inside vs. signalling a condvar von outside1Chris M. Thomasson
19 Apr 25                 i  `* Re: signalling a condvar from inside vs. signalling a condvar von outside5Bonita Montero
19 Apr 25                 i   `* Re: signalling a condvar from inside vs. signalling a condvar von outside4Chris M. Thomasson
19 Apr 25                 i    +- Re: signalling a condvar from inside vs. signalling a condvar von outside1Chris M. Thomasson
19 Apr 25                 i    `* Re: signalling a condvar from inside vs. signalling a condvar von outside2Bonita Montero
20 Apr 25                 i     `- Re: signalling a condvar from inside vs. signalling a condvar von outside1Chris M. Thomasson
19 Apr 25                 `* Re: signalling a condvar from inside vs. signalling a condvar von outside25Bonita Montero
20 Apr 25                  +- Re: signalling a condvar from inside vs. signalling a condvar von outside1Bonita Montero
20 Apr 25                  +* Re: signalling a condvar from inside vs. signalling a condvar von outside6Bonita Montero
20 Apr 25                  i`* Re: signalling a condvar from inside vs. signalling a condvar von outside5Chris M. Thomasson
20 Apr 25                  i `* Re: signalling a condvar from inside vs. signalling a condvar von outside4Bonita Montero
20 Apr 25                  i  `* Re: signalling a condvar from inside vs. signalling a condvar von outside3Chris M. Thomasson
20 Apr 25                  i   `* Re: signalling a condvar from inside vs. signalling a condvar von outside2Bonita Montero
20 Apr 25                  i    `- Re: signalling a condvar from inside vs. signalling a condvar von outside1Chris M. Thomasson
20 Apr 25                  `* Re: signalling a condvar from inside vs. signalling a condvar von outside17Chris M. Thomasson
21 Apr 25                   `* Re: signalling a condvar from inside vs. signalling a condvar von outside16Bonita Montero
22 Apr 25                    `* Re: signalling a condvar from inside vs. signalling a condvar von outside15Chris M. Thomasson
22 Apr 25                     `* Re: signalling a condvar from inside vs. signalling a condvar von outside14Bonita Montero
22 Apr 25                      `* Re: signalling a condvar from inside vs. signalling a condvar von outside13Chris M. Thomasson
23 Apr 25                       +* Re: signalling a condvar from inside vs. signalling a condvar von outside7Bonita Montero
23 Apr 25                       i`* Re: signalling a condvar from inside vs. signalling a condvar von outside6Chris M. Thomasson
24 Apr 25                       i +* Re: signalling a condvar from inside vs. signalling a condvar von outside2Bonita Montero
24 Apr 25                       i i`- Re: signalling a condvar from inside vs. signalling a condvar von outside1Chris M. Thomasson
24 Apr 25                       i `* Re: signalling a condvar from inside vs. signalling a condvar von outside3Bonita Montero
24 Apr 25                       i  `* Re: signalling a condvar from inside vs. signalling a condvar von outside2Chris M. Thomasson
24 Apr 25                       i   `- Re: signalling a condvar from inside vs. signalling a condvar von outside1Bonita Montero
23 Apr 25                       `* Re: signalling a condvar from inside vs. signalling a condvar von outside5Bonita Montero
24 Apr 25                        `* Re: signalling a condvar from inside vs. signalling a condvar von outside4Chris M. Thomasson
24 Apr 25                         +* Re: signalling a condvar from inside vs. signalling a condvar von outside2Chris M. Thomasson
24 Apr 25                         i`- Re: signalling a condvar from inside vs. signalling a condvar von outside1Chris M. Thomasson
24 Apr 25                         `- Re: signalling a condvar from inside vs. signalling a condvar von outside1Bonita Montero

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal