Spec-Zone.ru › Haskell 9

GHC.IO.Handle.Lock

Safe Haskell None
Language Haskell2010

data FileLockingNotSupported Source

Exception thrown by hLock on non-Windows platforms that don't support flock.

Since: base-4.10.0.0

Constructors

FileLockingNotSupported
Instances
Instances details
Exception FileLockingNotSupported Source
Instance details

Defined in GHC.Internal.IO.Handle.Lock.Common

Methods

toException :: FileLockingNotSupported -> SomeException Source

fromException :: SomeException -> Maybe FileLockingNotSupported Source

displayException :: FileLockingNotSupported -> String Source

backtraceDesired :: FileLockingNotSupported -> Bool Source

Show FileLockingNotSupported Source

Since: base-4.10.0.0

Instance details

Defined in GHC.Internal.IO.Handle.Lock.Common

Methods

showsPrec :: Int -> FileLockingNotSupported -> ShowS Source

show :: FileLockingNotSupported -> String Source

showList :: [FileLockingNotSupported] -> ShowS Source

data LockMode Source

Indicates a mode in which a file should be locked.

Constructors

SharedLock
ExclusiveLock

hLock :: Handle -> LockMode -> IO () Source

If a Handle references a file descriptor, attempt to lock contents of the underlying file in appropriate mode. If the file is already locked in incompatible mode, this function blocks until the lock is established. The lock is automatically released upon closing a Handle.

Things to be aware of:

  1. This function may block inside a C call. If it does, in order to be able to interrupt it with asynchronous exceptions and/or for other threads to continue working, you MUST use threaded version of the runtime system.
  2. The implementation uses relies on any of a number of locking facilities, depending upon what the platform supports:
  • LockFileEx is used on Windows
  • On platforms that support it we use the F_OFD_SETLK and F_OFD_SETLKW fnctls.
  • Otherwise we use flock

hence all of their caveats also apply here.

  1. On non-Windows platforms that don't support flock (e.g. Solaris) this function throws FileLockingNotImplemented. We deliberately choose to not provide fcntl based locking instead because of its broken semantics.

Since: base-4.10.0.0

hTryLock :: Handle -> LockMode -> IO Bool Source

Non-blocking version of hLock.

Returns True if taking the lock was successful and False otherwise.

Since: base-4.10.0.0

hUnlock :: Handle -> IO () Source

Release a lock taken with hLock or hTryLock.

Since: 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

Spec-Zone.ru

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