Zwei Fäden wechseln sich abwechselnd aus (Ping-Pong) aus

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Zwei Fäden wechseln sich abwechselnd aus (Ping-Pong) aus

by Anonymous » 02 Mar 2025, 14:57

Ist es möglich, eine garantierte alternierende Ausführung von zwei Threads ohne Verwendung von zwei Atomik (oder anderen Dingen wie Semaphoren usw.) vorzunehmen? Ich möchte sicherstellen, dass beide Threads ausgeführt werden, vorzugsweise, wenn man wartet, es sollte zuerst gehen, wenn eine andere aktuelle Iteration bestanden hat. Das gleiche Problem geschieht auch mit std :: atomic_flag :: wait .

Code: Select all

#include 
#include 
#include 

std::atomic_flag ping_lock_flag = ATOMIC_FLAG_INIT;
std::atomic_flag pong_lock_flag = ATOMIC_FLAG_INIT;
std::atomic_int idx = 0;
std::vector v(10);

void update()
{
ping_lock_flag.wait(false, std::memory_order_relaxed);
ping_lock_flag.clear(std::memory_order_release);

std::cout

Top