-
Notifications
You must be signed in to change notification settings - Fork 1
/
MultiExample.hs
32 lines (28 loc) · 1.03 KB
/
MultiExample.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import Control.Concurrent (forkIO, threadDelay)
import Control.Concurrent.Async (wait)
import Control.Monad (unless)
import System.Console.AsciiProgress
main :: IO ()
main = displayConsoleRegions $ do
pg1 <- newProgressBar def { pgWidth = 100
, pgOnCompletion = Just "pg 1 is Done!"
}
_ <- forkIO $ loop pg1 (100 * 1000)
pg2 <- newProgressBar def { pgWidth = 100
, pgOnCompletion = Just "pg 2 is Done!"
}
_ <- forkIO $ loop pg2 (400 * 1000)
pg3 <- newProgressBar def { pgWidth = 100
, pgOnCompletion = Just "pg 3 is Done!"
}
_ <- forkIO $ loop pg3 (200 * 1000)
wait $ pgFuture pg1
wait $ pgFuture pg2
wait $ pgFuture pg3
where
loop pg ts = do
b <- isComplete pg
unless b $ do
threadDelay ts
tick pg
loop pg ts