Ne aradığım tipte basit fonksiyonudur:Haskell'de threadID'i forkIO kullanarak thread thread kullanarak sorgulamanın bir yolu var mı?
alive :: ThreadID -> IO Bool
Ne aradığım tipte basit fonksiyonudur:Haskell'de threadID'i forkIO kullanarak thread thread kullanarak sorgulamanın bir yolu var mı?
alive :: ThreadID -> IO Bool
Bu kadar bildiğim kadarıyla standart base
kitaplıkları ile mümkün değildir, ancak bir parçacığının durumu almak için GHC özgü API kullanabilirsiniz: Ayrıca iplik engellendiğinde hesaba dflemstr cevabı üzerine uzanan
import GHC.Conc
alive :: ThreadID -> IO Bool
alive = fmap (== ThreadRunning) . threadStatus
Farklı tanım. Ben aynı zamanda bloke neden nedeni halledilir kez çok yakında o (yazılır mesela bir MVar
vb retry
tamamlanıncaya üzerinde, bir STM
işlem), yine kod yürütme oluyor gibi hayatta sayar düşünüyorum:
import GHC.Conc
import Control.Monad
isThreadStatusBlocked :: ThreadStatus -> Bool
isThreadStatusBlocked (ThreadBlocked _) = True
isThreadStatusBlocked _ = False
isAlive :: ThreadId -> IO Bool
isAlive = fmap (liftM2 (||) (ThreadRunning ==) isThreadStatusBlocked) . threadStatus