Здравствуйте, AndrewJD, Вы писали:
M>>нынешний вариант под микроконтроллер хорошо зашел. Кстати, вроде бы получилось даже вполне лок-фри, если один читатель и один писатель AJD>А какой memory ordering использовался для записи и чтения?
Здравствуйте, Marty, Вы писали:
M>>>нынешний вариант под микроконтроллер хорошо зашел. Кстати, вроде бы получилось даже вполне лок-фри, если один читатель и один писатель AJD>>А какой memory ordering использовался для записи и чтения?
M>Не совсем понял вопроса, если честно.
Один читатель и один писатель сами по себе не гарантируют безопасный лок-фри. В общем случае С++ требует использование атомиков с соотвествующим memory ordering. Для x86-64 это будет и так рабоать, но для других процов и возможно твоего контролера это не так.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Re[9]: Что оптимальнее для FIFO - queue или vector?
M>>>>нынешний вариант под микроконтроллер хорошо зашел. Кстати, вроде бы получилось даже вполне лок-фри, если один читатель и один писатель AJD>>>А какой memory ordering использовался для записи и чтения?
M>>Не совсем понял вопроса, если честно.
AJD>Один читатель и один писатель сами по себе не гарантируют безопасный лок-фри. В общем случае С++ требует использование атомиков с соотвествующим memory ordering. Для x86-64 это будет и так рабоать, но для других процов и возможно твоего контролера это не так.
Я оставил возможность пользователю самому расставить барьеры памяти. Это раз. Во вторых, я конечно не изучал глубоко, но полагаю, в STM32 при возникновении прерываний это все само собой делается. Но вообще надо бы копнуть, да