Changes between Version 138 and Version 139 of LightweightConcurrency


Ignore:
Timestamp:
Sep 9, 2017 11:54:39 AM (2 years ago)
Author:
takenobu
Comment:

Fixed link for community.haskell.org

Legend:

Unmodified
Added
Removed
Modified
  • LightweightConcurrency

    v138 v139  
    33= Lightweight Concurrency in GHC =
    44
    5 This page documents the effort to move GHC's concurrency support from its current location in the C part of the runtime system (RTS) to Haskell. This works builds on Peng Li's earlier work (http://community.haskell.org/~simonmar/papers/conc-substrate.pdf). This page contains information about the design, implementation, problems and potential solutions for building user-level concurrency primitives in GHC. Currently, the focus is on user-level implementation of non-deterministic parallelism in GHC ([http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html Control.Concurrent]).
     5This page documents the effort to move GHC's concurrency support from its current location in the C part of the runtime system (RTS) to Haskell. This works builds on Peng Li's earlier work (http://simonmar.github.io/bib/papers/conc-substrate.pdf). This page contains information about the design, implementation, problems and potential solutions for building user-level concurrency primitives in GHC. Currently, the focus is on user-level implementation of non-deterministic parallelism in GHC ([http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Concurrent.html Control.Concurrent]).
    66
    77Lightweight concurrency implementation resides in the [https://github.com/ghc/ghc/commits/ghc-lwc2 ghc-lwc2] branch in the git repo.
     
    369369=== Safe Foreign Calls ===
    370370
    371 A [http://community.haskell.org/~simonmar/papers/conc-ffi.pdf safe foreign call] does not impede the execution of other Haskell threads on the same scheduler, if the foreign call blocks. Before performing the foreign call, the task, say `T1`, releases the capability that it currently owns. This might wake up other tasks which are waiting to acquire a free capability. After the foreign call has completed, `T1` tries to reacquire the last owned capability. In the fast path, the foreign call quickly completes and `T1` reacquires the capability. In the slow path, some other task, say `T2`, acquires the capability.
     371A [http://simonmar.github.io/bib/papers/conc-ffi.pdf safe foreign call] does not impede the execution of other Haskell threads on the same scheduler, if the foreign call blocks. Before performing the foreign call, the task, say `T1`, releases the capability that it currently owns. This might wake up other tasks which are waiting to acquire a free capability. After the foreign call has completed, `T1` tries to reacquire the last owned capability. In the fast path, the foreign call quickly completes and `T1` reacquires the capability. In the slow path, some other task, say `T2`, acquires the capability.
    372372
    373373==== Slow-path in Vanilla RTS ====
     
    478478
    479479  * [wiki:GhcConcurrency Concurrent Programming in GHC]
    480   * [http://community.haskell.org/~simonmar/papers/conc-substrate.pdf Lightweight Concurrent Primitives for GHC]
     480  * [http://simonmar.github.io/bib/papers/conc-substrate.pdf Lightweight Concurrent Primitives for GHC]
    481481  * [http://research.microsoft.com/en-us/um/people/simonpj/papers/marktoberdorf/ Tackling the awkward squad]
    482   * [http://community.haskell.org/~simonmar/papers/multicore-ghc.pdf Runtime Support for Multicore Haskell]
     482  * [http://simonmar.github.io/bib/papers/multicore-ghc.pdf Runtime Support for Multicore Haskell]
    483483  * [http://kcsrk.info/papers/schedact_jfp15.pdf Composable Scheduler Activations for Haskell]