
#13944: Introduce synchronized FFI -------------------------------------+------------------------------------- Reporter: winter | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: 8.4.1 Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by winter): OK, now i'm pretty sure what `synchronized` would do, it will behave just like a `safe` FFI call with one difference: a task which comes across a `synchronized` call will give off its capacity, but will not hand off it to other tasks unless that's a GC task. This means `synchronized` calls will still block whole capacity, but it will not spawn new threads, nor blocking GC. I'm not sure if this make sense, it seems the overhead of safe FFI calls come from both the capacity transfer and creating new OS threads. But i'm not sure which is more costly. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13944#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler