Какие барьеры памяти мне нужны, чтобы записаться на изображение в потоке видимым в потоке B?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Какие барьеры памяти мне нужны, чтобы записаться на изображение в потоке видимым в потоке B?

Сообщение Anonymous »

Куда мне нужно положить барьеры памяти? Запись на изображение в потоке A должно быть видно в потоке B? Пятна помечены в примере псевдода и получены из этого вопроса/ответа.
В настоящее время в нашей команде в настоящее время обсуждается, чтобы изменить заблокированное ожидание в бесплатном блоке. Поэтому следует игнорировать как барьера памяти.
global:

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

_Atomic int request = 0;
_Atomic int reply = 0;
char image[640 * 640];

mutex_t mu;
cond_t  cv;
поток a:

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

int last_req = 0
int curr_req = request;

if (curr_req != last_req)
{
last_req = curr_req;
char* buff = GetBufferFromCamera(.....);
memcpy(image, buff, sizeof(image));
atomic_thread_fence(memory_order_release);  // Okay?
}

mtx_lock(&mu);
reply = curr_req;
cnd_signal(&cv);
mtx_unlock(&mu);
поток B:

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

int ticket = atomic_fetch_add(&request, 1);
ticket++;
mtx_lock(&mu);
while (ticket != reply)
cond_wait(&cv, &mu);
mtx_unlock(&mu)

atomic_thread_fence(memory_order_acquire); // Okay?

// I want to use image

в качестве бокового примечания: я на ARM8.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -a-visible
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Барьеры памяти в пользовательском пространстве? (Linux, x86-64)
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Барьеры памяти в пользовательском пространстве? (Linux, x86-64)
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Почему Android SystemProperties использует такие барьеры памяти?
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Почему Android SystemProperties использует такие барьеры памяти?
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Почему Android SystemProperties использует такие барьеры памяти?
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

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