Spec-Zone.ru › OCaml 4.14

Модуль Mutex

module Mutex: sig .. end

Блокировки для взаимного исключения.

Мьютексы (блокировки взаимного исключения) используются для реализации критических секций и защиты общих изменяемых структур данных от одновременного доступа. Типичное использование (если m — мьютекс, связанный со структурой данных D):

     Mutex.lock m;
     (* Critical section that operates over D *);
     Mutex.unlock m
   
type t 

Тип мьютексов.

val create : unit -> t

Возвращает новый мьютекс.

val lock : t -> unit

Заблокировать заданный мьютекс. Только один поток может заблокировать мьютекс в любой момент. Поток, пытающийся заблокировать мьютекс, уже заблокированный другим потоком, будет приостановлен, пока другой поток не разблокирует мьютекс.

  • До версии 4.12 Sys_error не генерировалась для рекурсивной блокировки (платформозависимое поведение)
  • Возвращает Sys_error если мьютекс уже заблокирован потоком, вызывающим Mutex.lock.
val try_lock : t -> bool

То же, что и Mutex.lock, но не приостанавливает вызывающий поток, если мьютекс уже заблокирован: в этом случае просто возвращает false сразу. Если мьютекс разблокирован, заблокируйте его и верните true.

val unlock : t -> unit

Разблокировать заданный мьютекс. Другие приостановленные потоки, пытающиеся заблокировать мьютекс, возобновятся. Мьютекс должен быть предварительно заблокирован потоком, вызывающим Mutex.unlock.

  • До версии 4.12 Sys_error не генерировалась при разблокировке разблокированного мьютекса или при разблокировке мьютекса другим потоком.
  • Возвращает Sys_error если мьютекс разблокирован или был заблокирован другим потоком.

© 1995-2022 INRIA.
https://v2.ocaml.org/releases/5.0/htmlman/libref/Mutex.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API