4
有沒有辦法喚醒Haskell中的特定線程?有一個function that suspends the current thread。但清醒的對手似乎並不存在。我可以喚醒特定的Haskell線程嗎?
有沒有辦法喚醒Haskell中的特定線程?有一個function that suspends the current thread。但清醒的對手似乎並不存在。我可以喚醒特定的Haskell線程嗎?
yield
不暫停當前線程 - 它將其移動到運行隊列的後面。它仍然在運行隊列中,它只是確保其他可運行線程(如果定義了多個執行上下文,可能不是所有可運行線程,這使得這是一個非常弱的保證)有機會在繼續運行之前運行。大多數情況下,您應該忽略yield
。例外是你明確瞭解它的作用,以及爲什麼這很重要。
要實際掛起並恢復一個線程,MVar
s是要走的路。當線程在空的MVar
上等待時,它將從可運行隊列中刪除。當一個值被放入MVar
時,一個等待它的線程(我相信GHC總是等待MVar
最長的線程,但不能保證)被放回到可運行隊列中。
嗯......聽起來不錯。 – fho