$ cabal install async async-2.2.1 installed
安裝 http-conduitgit
$ cabal install http-conduit Installed http-conduit-2.3.2
Sample code to accompany the book "Parallel and Concurrent Programming in Haskell"github
module GetURL (getURL) where import Network.HTTP.Conduit import Data.ByteString (ByteString) import qualified Data.ByteString.Lazy as L getURL :: String -> IO ByteString getURL url = L.toStrict <$> simpleHttp url
一個下載模塊 getURL併發
import GetURL import Control.Concurrent.Async import qualified Data.ByteString as B main = do a1 <- async (getURL "http://www.wikipedia.org/wiki/Shovel") a2 <- async (getURL "http://www.wikipedia.org/wiki/Spade") r1 <- wait a1 r2 <- wait a2 print (B.length r1, B.length r2) -- (87653,58155)
import GetURL import Control.Concurrent.Async import qualified Data.ByteString as B main = do (r1, r2) <- concurrently (getURL "http://www.wikipedia.org/wiki/Shovel") (getURL "http://www.wikipedia.org/wiki/Spade") print (B.length r1, B.length r2) -- (87653,58155)