[GHC] #13995: provide hook for 'setNumCapabilities'
GHC
ghc-devs at haskell.org
Wed Jul 19 05:26:12 UTC 2017
#13995: provide hook for 'setNumCapabilities'
-------------------------------------+-------------------------------------
Reporter: winter | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Keywords: | Operating System: Unknown/Multiple
Architecture: | Type of failure: None/Unknown
Unknown/Multiple |
Test Case: | Blocked By:
Blocking: | Related Tickets:
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
This request if straight forward: i want to run some code when user call
`setNumCapabilities`.
I'm making a
[https://github.com/winterland1989/stdio/blob/newFD/System/LowResTimer.hs
stripped timing wheel implementation], and the problem is obvious: we keep
an array of timer managers just like I/O managers, but we have to ask user
to call something like `lowResTimerManagerCapabilitiesChanged` so that we
can re-allocate new array, which is unreasonable.
The same problem exists in some stripped resource pool implementation, so
i proposed
{{{
-- this is not exported
capabilityChangedHook :: IORef (IO ())
capabilityChangedHook = unsafePerformIO $ newIORef (return ())
-- this is exported to user
addCapabilityChangedHook :: IO () -> IO ()
addCapabilityChangedHook f = do
atomicModifyIORef' capabilityChangedHook $ \ g -> (g >> f, ())
setNumCapabilities :: ...
setNumCapabilities = ...
...
-- somewhere inside setNumCapabilities
hook <- readIORef capabilityChangedHook
hook
...
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13995>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list