[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