[ 
https://issues.apache.org/jira/browse/MESOS-3119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14641257#comment-14641257
 ] 

Benjamin Hindman edited comment on MESOS-3119 at 7/24/15 11:49 PM:
-------------------------------------------------------------------

Turns out we can't use {{thread_local}} with the default installed clang on OS 
X. See https://devforums.apple.com/message/1079348#1079348. Relevant snippet: 
"We don't support the thread_local implementation from the open-source Clang 
because we believe we can provide a higher-performance implementation for our 
platforms using various features in the dynamic linker. Such an implementation 
would be ABI-incompatible with the implementation in the open-source Clang, so 
we won't support thread_local until we get an implementation we can live with 
for the foreseeable future."

So, I've reopened this issue and reverted 
{{f24db46b92796efaa15766c625b8ef4706240f2f}} for now.

One possible path forward is to use {{__thread}} since it's supported by both 
clang and gcc (and we could introduce something similar for non-POSIX 
platforms), but we'd need to be careful because it has C style semantics, which 
means that we won't get object construction/destruction (which we would with 
{{thread_local}} IIUC). We currently don't need object construction/destruction 
in our code base, but I'd still prefer to wrap {{__thread}} in some sort of 
macro that makes it clear that we need to create _pointers_ when using 
{{__thread}}.


was (Author: benjaminhindman):
Turns out we can't use `thread_local` with the default installed clang on OS X. 
See https://devforums.apple.com/message/1079348#1079348. Relevant snippet: "We 
don't support the thread_local implementation from the open-source Clang 
because we believe we can provide a higher-performance implementation for our 
platforms using various features in the dynamic linker. Such an implementation 
would be ABI-incompatible with the implementation in the open-source Clang, so 
we won't support thread_local until we get an implementation we can live with 
for the foreseeable future."

So, I've reopened this issue and reverted 
`f24db46b92796efaa15766c625b8ef4706240f2f` for now.

One possible path forward is to use `__thread` since it's supported by both 
clang and gcc (and we could introduce something similar for non-POSIX 
platforms), but we'd need to be careful because it has C style semantics, which 
means that we won't get object construction/destruction (which we would with 
`thread_local` IIUC). We currently don't need object construction/destruction 
in our code base, but I'd still prefer to wrap __thread in some sort of macro 
that makes it clear that we need to create _pointers_ when using `__thread`.

> Remove pthread specific code from Libprocess
> --------------------------------------------
>
>                 Key: MESOS-3119
>                 URL: https://issues.apache.org/jira/browse/MESOS-3119
>             Project: Mesos
>          Issue Type: Improvement
>          Components: libprocess
>            Reporter: Joris Van Remoortere
>            Assignee: Joris Van Remoortere
>              Labels: libprocess, mesosphere, windows
>             Fix For: 0.24.0
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to