Функции блокировки.

Функция

void omp_init_lock ( omp_lock_t *lock )

предназначена для инициализации блокировки объекта с указателем lock. Она не возвращает никаких значений.

Следующая функция

void omp_destroy_lock ( omp_lock_t *lock )

гарантирует, что объект с указателем lock в данный момент не инициализирован.

С помощью функции

void omp_set_lock ( omp_lock_t *lock )

можно организовать блокировку выполнения потока до тех пор, пока объект открыт для операций чтения-записи. После завершения операций чтения-записи объект блокируется и продолжается выполнение потока.

Для открытия заблокированного объекта с указателем lock можно воспользоваться функцией

void omp_unset_lock ( omp_lock_t *lock )

Функция

int omp_test_lock ( omp_lock_t *lock )

позволяет попытаться заблокировать объект, не прерывая выполнения потока. Она возвращает значение TRUE или 1, если попытка завершилась успешно. В противном случае возвращается значение FALSE или 0.

Ниже приведен пример фрагмента программы на языке C/C++, иллюстрирующий применение функций блокировки.

#include <omp.h>void main ( ){ omp_ lock_t lock; int myid; omp_init_lock (&lock);#pragma omp parallel shared(lock) private(myid) { myid = omp_get_thread_num ( ); omp_set_lock (&lock); printf ("Hello from thread %d\n", myid); omp_unset_lock (&lock); while (! omp_test_lock (&lock)) { skip (myid); } do_work (myid); omp_unset_lock (&lock); } omp_destroy_lock (&lock);}

Пример 4.5. Пример фрагмента программы на языке C/C++, иллюстрирующий применение функций блокировки (html, txt)








Дата добавления: 2015-02-03; просмотров: 788;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.