Proposal: add forkOnIO and friends to Control.Concurrent:

Simon Marlow marlowsd at
Wed Mar 30 13:50:41 CEST 2011

On 22/12/2010 11:41, Simon Marlow wrote:
 > Ticket:

FYI, I just pushed the following:

Wed Mar 30 03:05:04 PDT 2011  Simon Marlow <marlowsd at>
   * Export the affinity API from Control.Concurrent: forkOn and friends.

   forkOn             :: Int -> IO () -> IO ThreadId
   forkOnWithUnmask   :: Int -> ((forall a . IO a -> IO a) -> IO ()) -> 
IO ThreadId
   getNumCapabilities :: IO Int
   threadCapability   :: ThreadId -> IO (Int, Bool)

   Following discussion on the libraries list, I renamed forkOnIO to
   forkOn.  In due course we might want to also rename forkIO to fork.

   I left the Int argument as it is, it's quite useful to be able to
   specify a number to be interpreted modulo the actual number of

   I also used the term "capability" consistently.  It might not be the
   best choice, but we have to pick something.


More information about the Libraries mailing list