Я пишу что-то вроде музыкального плеера и застревает с индикатором хода воспроизведения.Как выйти из потока forkIO, когда он возбуждает процедуру цикла
В моей программе, когда нажата кнопка воспроизведения, я использую forkIO для разветвления потока, который контролирует панель прогресса. Однако разветвленный поток теперь выполняет цикл. Как я могу сообщить, что поток завершается, когда я останавливаю текущую песню или меняю песни.
Я пытался использовать IORef Var, например
flag <- newIORef False
forkIO $ progressBarFunc flag
и в функции progreeBarFunc
он проверяет, является ли флаг верно и решает выйти из цикла или нет.
Но это не работает.
В общем, как я могу сказать, что разветвленный поток останавливается, когда я использую forkIO для вилки потоков?
Кроме того, если у меня есть IORef Var и передайте его функции forkIO, выполните основной поток, а разветвленный поток - один и тот же IORef Var, или у вилки на самом деле есть его копия?