Proceedings of the ACM SIGPLAN Workshop on Haskell Workshop 2007
DOI: 10.1145/1291201.1291217
|View full text |Cite
|
Sign up to set email alerts
|

Lightweight concurrency primitives for GHC

Abstract: The Glasgow Haskell Compiler (GHC) has quite sophisticated support for concurrency in its runtime system, which is written in lowlevel C code. As GHC evolves, the runtime system becomes increasingly complex, error-prone, difficult to maintain and difficult to add new concurrency features.This paper presents an alternative approach to implement concurrency in GHC. Rather than hard-wiring all kinds of concurrency features, the runtime system is a thin substrate providing only a small set of concurrency primitive… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
22
0

Year Published

2009
2009
2021
2021

Publication Types

Select...
6
1

Relationship

2
5

Authors

Journals

citations
Cited by 27 publications
(22 citation statements)
references
References 23 publications
0
22
0
Order By: Relevance
“…Moreover, unlike our approach, the Par-monad is restricted to shared memory parallelism. Two separate lightweight implementations of concurrent Haskell have also been produced that lift scheduling and other concurrency features to the Haskell level (Li et al, 2007;Sivaramakrishnan et al, 2013). This complements our work, that instead focuses on the introduction and control of parallelism.…”
Section: Scheduling Support In Haskellmentioning
confidence: 75%
“…Moreover, unlike our approach, the Par-monad is restricted to shared memory parallelism. Two separate lightweight implementations of concurrent Haskell have also been produced that lift scheduling and other concurrency features to the Haskell level (Li et al, 2007;Sivaramakrishnan et al, 2013). This complements our work, that instead focuses on the introduction and control of parallelism.…”
Section: Scheduling Support In Haskellmentioning
confidence: 75%
“…One possible response, taken by Li et al [14] is to program these components, too, into Haskell. The difficulty is that all they are intricate and highly-optimised.…”
Section: The Challengementioning
confidence: 99%
“…The high-level language Erlang supports large numbers of lightweight threads running in parallel on a smaller number of worker threads [Hedqvist 1998], as does Haskell [Li et al 2007]. Pall's LuaJIT [Pall 2011], a JIT-compiled implementation of Lua, includes an interface between C and Lua coroutines containing a primitive similar to SWAPSTACK, implemented as inline assembly for GCC on the x86 architecture.…”
Section: Related Workmentioning
confidence: 99%
“…These constructs ease the programming of cooperating algorithms, like iteration over and processing of a complex datastructure's contents, or a lexer feeding tokens to a parser. Similarly, lightweight threads are found in Erlang [Hedqvist 1998], Haskell [Li et al 2007] and Go, where they are used to write more straightforward solutions to concur-rent problems like network servers or discrete event simulations, and to take advantage of multicore systems.…”
Section: Introductionmentioning
confidence: 99%