Два потока чередующиеся (пинг-понг) выполнениеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Два потока чередующиеся (пинг-понг) выполнение

Сообщение Anonymous »

Можно ли сделать гарантированное чередующее выполнение двух потоков без использования двух атомиков (или других вещей, таких как семафоры и т. Д.)? Я хочу убедиться, что оба потока выполняются, предпочтительно, если кто -то ждал, он должен перейти, когда другая прошла текущая итерация. Та же проблема происходит даже с STD :: ATOMIC_FLAG :: WAIT .
желаемый результат может быть достигнут с двумя атомными флагами, такими как в демонстрации:

Код: Выделить всё

#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 thread1fn()
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79478387/two-threads-alternating-ping-pong-execution[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»