Liste des Groupes | Revenir à cl c++ |
Am 26.04.2025 um 08:26 schrieb Bonita Montero:So, do that. It's your software. Do what you like. This is a very old debate. Take your contrived test and just, roll with it. Whatever.Am 25.04.2025 um 22:01 schrieb Chris M. Thomasson:I just tried to awaken all 31 threads from outside holding the mutex,
>
> If you say so... Too busy right now. Perhaps sometime later on tonight.
>
>
If there would be a thundering herd problem with glibc's condvar it
would happen very often with my code since I awake 31 threads at once
with my machine.
but not from inside:
for( size_t r = N; r; --r )
{
unique_lock lock( mtx );
signalled = nClients;
ai.store( nClients, memory_order_relaxed );
lock.unlock();
if( argc < 2 )
cv.notify_all();
else
for( int c = nClients; c; cv.notify_one(), --c );
bs.acquire();
}
The result: 7.500 context switches per thread, not 3.000.
10000 rounds,
7498.06 context switches pe thread
So never signal a condvar to multiple threads from outside !
Les messages affichés proviennent d'usenet.