Использование блокировок чтения-записи (rwlock.h)
API определен в заголовочном файле sysroot-*-kos/include/kos/rwlock.h из состава KasperskyOS SDK. Также в составе KasperskyOS SDK поставляется заголовочный файл sysroot-*-kos/include/kos/sync_api.h, который дает возможность транзитивно включить в исходный код программы заголовочный файл rwlock.h и заголовочные файлы для использования других примитивов синхронизации.
API предназначен для синхронизации потоков исполнения на основе блокировок чтения-записи. Блокировка чтения-записи – примитив синхронизации, который используется, чтобы разрешить доступ к разделяемым между потоками исполнения ресурсам либо на запись для одного потока исполнения, либо на чтение для нескольких потоков исполнения одновременно.
Сведения о функциях API приведены в таблице ниже.
Использование API
Типовой сценарий использования API включает следующие шаги:
- Инициализация блокировки чтения-записи вызовом функции
KosRWLockInit(). - Использование блокировки чтения-записи потоками исполнения:
- Захват блокировки чтения-записи для записи (вызовом функции
KosRWLockWrite()илиKosRWLockTryWrite()) или для чтения (вызовом функцииKosRWLockRead()илиKosRWLockTryRead()). - Освобождение блокировки-чтения вызовом функции
KosRWLockUnlock().
- Захват блокировки чтения-записи для записи (вызовом функции
Сведения о функциях API
Функции rwlock.h
Функция | Сведения о функции |
|---|---|
| Назначение Инициализирует блокировку чтения-записи. Параметры
Возвращаемые значения Нет. |
| Назначение Захватывает блокировку чтения-записи для чтения. Если блокировка чтения-записи уже захвачена для записи, или есть потоки исполнения, ожидающие захвата этой блокировки чтения-записи для записи, то ожидает освобождения этой блокировки чтения-записи от захвата для записи сколь угодно долго. Параметры
Возвращаемые значения Нет. |
| Назначение Захватывает блокировку чтения-записи для чтения. Если блокировка чтения-записи уже захвачена для записи, или есть потоки исполнения, ожидающие захвата этой блокировки чтения-записи для записи, то не ожидает освобождения этой блокировки чтения-записи от захвата для записи, а возвращает управление. Параметры
Возвращаемые значения В случае успеха возвращает |
| Назначение Захватывает блокировку чтения-записи для записи. Если блокировка чтения-записи уже захвачена для записи или чтения, ожидает освобождения этой блокировки чтения-записи сколь угодно долго. Параметры
Возвращаемые значения Нет. |
| Назначение Захватывает блокировку чтения-записи для записи. Если блокировка чтения-записи уже захвачена для записи или чтения, не ожидает освобождения этой блокировки чтения-записи, а возвращает управление. Параметры
Возвращаемые значения В случае успеха возвращает |
| Назначение Освобождает блокировку чтения-записи. Параметры
Возвращаемые значения Нет. Дополнительные сведения Если блокировка чтения-записи захвачена для чтения, то эта блокировка чтения-записи остается захваченной для чтения, пока все потоки исполнения, выполняющие чтение, не освободят ее. |