Safe Haskell | Safe-Infered |
---|
- select :: [Fd] -> [Fd] -> [Fd] -> Timeout -> IO (TMVar CInt)
- selectOrTakeTMVar :: [Fd] -> [Fd] -> [Fd] -> Timeout -> TMVar a -> IO (Either CInt a)
- selectOrElse :: [Fd] -> [Fd] -> [Fd] -> Timeout -> STM a -> IO (Either CInt a)
- selectOrElse' :: STM a -> [Fd] -> [Fd] -> [Fd] -> Timeout -> IO (Either a CInt)
- selectOrReadTChan :: [Fd] -> [Fd] -> [Fd] -> Timeout -> TChan a -> IO (Either CInt a)
- data Timeout
- = Never
- | Time Seconds Microseconds
Documentation
selectOrTakeTMVar :: [Fd] -> [Fd] -> [Fd] -> Timeout -> TMVar a -> IO (Either CInt a)Source
The parameters are the same as for select
, except for the
addition of a TMVar
. The function returns as soon as either the
select(2)
has completed, or the TMVar
is full.
The return value is either the return value of select(2)
, or the
content of the TMVar
. If the TMVar
becomes available first,
then the select(2)
call may hang around forever or until it times
out (as specified by the Timeout
parameter). If the select(2)
returns before the TMVar
is available, the TMVar
is guaranteed
to be left in place.
See also selectOrReadTChan
and selectOrElse
. Note that
selectOrTakeTMVar
and the former are special cases of the latter.
(Incidentally, selectOrTakeTMVar
is the task I really wanted to
accomplish, and solving it just turned into this little library).
selectOrElse :: [Fd] -> [Fd] -> [Fd] -> Timeout -> STM a -> IO (Either CInt a)Source
Analogous to selectOrTakeTMVar
, except with a general STM
action in place of taking a TMVar
.
selectOrElse' :: STM a -> [Fd] -> [Fd] -> [Fd] -> Timeout -> IO (Either a CInt)Source
A version of selectOrElse
that prefers the STM operation to
select
when both are available.