Создание общей блокировки с использованием openmp

Я обычно использую

#pragma omp critical(lock)
{ ... }

Директива, когда мне нужно убедиться, что только один поток выполняет данный кусок кода.

Поэтому я ищу способ реализации общих и эксклюзивных блокировок, используя нечто подобное. У меня есть несколько потоков, которые могут читать или писать переменные. Когда поток пишет, он заблокирует все остальные потоки от чтения или записи. Однако чтение переменной не должно ничего блокировать. Как я могу это сделать?

1

Решение

К сожалению, OpenMP не поддерживает блокировки чтения-записи. Вместо этого вы можете использовать другие библиотеки, такие как Boost, который предлагает shared_lock.

0

Другие решения

Других решений пока нет …