Boost logo

Boost Users :

Subject: Re: [Boost-users] Thread local storage
From: Peter Dimov (pdimov_at_[hidden])
Date: 2009-03-29 17:54:13


Oliver Abert:
> On 29.03.2009, at 19:36, Peter Dimov wrote:
>
>> Oliver Abert:
>>> Hi Everyone,
>>>
>>> I am using Boost Threads (1.38) as threading library and I also use
>>> the thread_specific_ptr to store a minor amount of data per thread (I
>>> think currently it is like 5 different pointer values per thread).
>>> Technically everything works out fine, but I am having a performance
>>> problem on Mac OS X. On Linux the performance is 10 times faster than
>>> on Mac OS. If I use pthreads on Mac OS I have identical performance to
>>> the Linux version. Both versions are running on the same machine using
>>> 8 threads both.
>>
>> What does your profiler say?
>
> about 80% of the time is spend in __spin_lock which in turnwas called by
> pthread_once. If I use only one thread (instead of 8) the percantage goes
> down to 2.5% - which is still a bit much for my taste.

It looks like Mac OS's pthread_once is slower than the one in Linux. Can you
provide further clues about the call stack? Where does the pthread_once call
come from? This might help Anthony Williams (the maintainer of Boost.Thread)
fix the performance problem by somehow avoiding the particular pthread_once
call.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net