Н., Пескова Е. Е., Шаманаев П. А. Основы параллельного программирования с использованием технологий mpi и openmp учебное пособие саранск издательство свмо 2013 2



Pdf көрінісі
бет50/53
Дата07.06.2023
өлшемі6.58 Mb.
#474796
1   ...   45   46   47   48   49   50   51   52   53
ParProg MPI OpenMP

omp_init_lock() 
и 
omp_init_nest_lock(). После выполнения функции замок переводится в 
разблокированное состояние. Для множественного замка коэффициент 
захваченности устанавливается в ноль.
Функции 
omp_destroy_lock() 
и 
omp_destroy_nest_lock() 
используются для переведения простого или множественного замка в 
неинициализированное состояние. 
Для захватывания замка используются функции omp_set_lock() и 
omp_set_nest_lock()
Вызвавшая 
эту 
функцию 
нить 
дожидается 
освобождения замка, а затем захватывает его. Замок при этом переводится 
в заблокированное состояние. Если множественный замок уже захвачен 
данной нитью, то нить не блокируется, а коэффициент захваченности 
увеличивается на единицу.
Для освобождения замка используются функции omp_unset_lock() и
omp_unset_nest_lock(). Вызов этой функции освобождает простой 
замок, если он был захвачен вызвавшей нитью. Для множественного замка 
уменьшает на единицу коэффициент захваченности. Если коэффициент 
станет равен нулю, замок освобождается. Если после освобождения замка 
есть нити, заблокированные на операции, захватывающей данный замок
замок будет сразу же захвачен одной из ожидающих нитей. 
Для неблокирующей попытки захвата замка используются функции 
omp_test_lock() и omp_test_nest_lock(). Данная функция пробует захватить 
указанный замок. Если это удалось, то для простого замка функция 


73 
возвращает 1, а для множественного замка – новый коэффициент 
захваченности. Если замок захватить не удалось, в обоих случаях 
возвращается 0. 
Использование замков является наиболее гибким механизмом 
синхронизации, поскольку с помощью замков можно реализовать все 
остальные варианты синхронизации [6]. 


Достарыңызбен бөлісу:
1   ...   45   46   47   48   49   50   51   52   53




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет