STM-Beispiel

Spiel-Server, sobald wenigstens zwei Leute eingeloggt sind, soll gespielt werden

login server s = atomically $ do
    m <- readTVar $ registry server
    let ok = not $ M.member ( name s ) m
    when ok $ writeTVar ( registry server ) 
            $ M.insert ( name s ) s m

select_players server = atomically $ do
    m <- readTVar $ registry server
    check $ M.size m >= 2
    return $ M.elems m
https://github.com/jwaldmann/mex

Johannes Waldmann 2012-01-31