GHC.IO.Handle.Lock
| Безопасный Haskell | None |
|---|---|
| Язык | Haskell2010 |
data FileLockingNotSupported Источник
Исключение, выбрасываемое hLock на платформах, отличных от Windows, которые не поддерживают flock.
С версии: base-4.10.0.0
Конструкторы
| FileLockingNotSupported |
Экземпляры
| Exception FileLockingNotSupported Источник | |
Определён в GHC.Internal.IO.Handle.Lock.Common | |
| Show FileLockingNotSupported Источник | С версии: base-4.10.0.0 |
Определён в GHC.Internal.IO.Handle.Lock.Common МетодыshowsPrec :: Int -> FileLockingNotSupported -> ShowS Источник show :: FileLockingNotSupported -> String Источник showList :: [FileLockingNotSupported] -> ShowS Источник | |
Указывает режим, в котором следует заблокировать файл.
Конструкторы
| SharedLock | |
| ExclusiveLock |
hLock :: Handle -> LockMode -> IO () Источник
Если Handle ссылается на файловый дескриптор, функция пытается заблокировать содержимое соответствующего файла в подходящем режиме. Если файл уже заблокирован в несовместимом режиме, функция блокируется до установки блокировки. Блокировка автоматически снимается при закрытии Handle.
Следует учитывать следующее:
- Эта функция может заблокироваться во время вызова C. Если это произойдёт, для возможности прервать её асинхронными исключениями и/или продолжить работу других потоков НЕОБХОДИМО использовать многопоточную версию системы выполнения.
- В реализации используются различные механизмы блокировки в зависимости от того, какие из них поддерживает платформа:
-
LockFileExиспользуется в Windows - На платформах, поддерживающих эту возможность, используются
F_OFD_SETLKиF_OFD_SETLKWfnctls. - В остальных случаях используется
flock
поэтому все их оговорки также применимы и здесь.
- На платформах, отличных от Windows, которые не поддерживают
flock(например, Solaris), эта функция выбрасываетFileLockingNotImplemented. Мы намеренно не стали использовать блокировки на основе fcntl, поскольку их семантика нарушена.
С версии: base-4.10.0.0
hTryLock :: Handle -> LockMode -> IO Bool Источник
Неблокирующая версия hLock.
Возвращает True, если блокировку удалось установить, и False в противном случае.
С версии: base-4.10.0.0
hUnlock :: Handle -> IO () Источник
Снимает блокировку, установленную с помощью hLock или hTryLock.
С версии: base-4.11.0.0
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.14.1/docs/libraries/base-4.22.0.0-66f8/GHC-IO-Handle-Lock.html