I detta dokument föreslås att man kombinerar två till synes motsatta programmeringsmodeller för att bygga massivt samtidiga nätverkstjänster: den händelsedrivna modellen och den multitrådade modellen. Resultatet är en hybrid design som erbjuder det bästa av både världar - enkel användning och uttrycksfullhet av trådar och flexibilitet och prestanda av händelser. Detta dokument visar hur hybridmodellen kan implementeras helt på applikationsnivå med hjälp av concurrency monads i Haskell, som ger typsäkra abstraktioner för både händelser och trådar. Detta tillvägagångssätt förenklar utvecklingen av massivt samtidig programvara på ett sätt som skalas till verkliga nätverkstjänster. Implementeringen av Haskell stöder undantag, symmetrisk multiprocessing, programvarutransaktionsminne, asynkrona I/O-mekanismer och nätverksprotokoll stackar på applikationsnivå. Experimentella resultat visar att denna monadbaserade metod har bra prestanda: trådarna är extremt lätta (skalning till tio miljoner trådar), och I/O-prestandan jämförs gynnsamt med Linux NPTL.
Ett system för hybridtrådshändelser har inbäddats i Haskell REF där både multitrådade och händelsestyrda komponenter implementeras på applikationsnivå.
Combining events and threads for scalable network services implementation and evaluation of monadic, application-level concurrency primitives
{'venue': "PLDI '07", 'journal': None, 'mag_field_of_study': ['Computer Science']}