[GHC] #10674: Expose OSThreadID and assorted functions from Haskell

GHC ghc-devs at haskell.org
Thu Jul 23 10:19:05 UTC 2015


#10674: Expose OSThreadID and assorted functions from Haskell
-------------------------------------+-------------------------------------
        Reporter:  Fuuzetsu          |                   Owner:
            Type:  feature request   |                  Status:  new
        Priority:  normal            |               Milestone:
       Component:  Compiler          |                 Version:  7.10.1
      Resolution:                    |                Keywords:
Operating System:  Unknown/Multiple  |            Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |               Test Case:
      Blocked By:                    |                Blocking:
 Related Tickets:                    |  Differential Revisions:
-------------------------------------+-------------------------------------
Description changed by Fuuzetsu:

Old description:

> Currently given two {{{ThreadId}}}s, there is no way to tell without FFI
> if they are running on the same OS thread. There is not even a way to ask
> what OS thread we are currently on: something like {{{myThreadId}}}
> except {{{myOsThreadId}}}.
>
> Currently to remedy this, the user has to effectively copy and paste
> parts of the internal rts files and use something like {{{.hsc}}} with
> CPP to get at this information. This is not really portable on the user
> side and requires nasty gutting.
>
> In the RTS the function we are interested in is at least
> {{{osThreadId}}}: at least with this function we can inspect current
> {{{OSThreadId}}} and communicate it out through an {{{MVar}}} or
> otherwise.
>
> So this is a feature request for an abstract type {{{OSThreadId}}} with
> instances of at least {{{Eq, Show}}} and a function {{{myOsThreadId :: IO
> OSThreadId}}}.
>
> Nice to have would be {{{osThreadId :: ThreadID -> IO OSThreadId}}} but
> not critical. If there is room for optimisation in GHC, functions like
> {{{sameOsThread :: ThreadId -> ThreadId -> IO Bool}}} would also be nice
> but again not critical.
>
> Not sure what to set in ticket meta-data so please change as appropriate.

New description:

 Currently given two {{{ThreadId}}}s, there is no way to tell without FFI
 if they are running on the same OS thread. There is not even a way to ask
 what OS thread we are currently on: something like {{{myThreadId}}} except
 {{{myOsThreadId}}}.

 Currently to remedy this, the user has to effectively copy and paste parts
 of the internal rts files and use something like {{{.hsc}}} with CPP to
 get at this information. This is not really portable on the user side and
 requires nasty gutting.

 In the RTS the function we are interested in is at least {{{osThreadId}}}:
 with this function we can inspect current {{{OSThreadId}}} and communicate
 it out through an {{{MVar}}} or otherwise.

 So this is a feature request for an abstract type {{{OSThreadId}}} with
 instances of at least {{{Eq, Show}}} and a function {{{myOsThreadId :: IO
 OSThreadId}}}.

 Nice to have would be {{{osThreadId :: ThreadID -> IO OSThreadId}}} but
 not critical. If there is room for optimisation in GHC, functions like
 {{{sameOsThread :: ThreadId -> ThreadId -> IO Bool}}} would also be nice
 but again not critical.

 Not sure what to set in ticket meta-data so please change as appropriate.

--

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10674#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list