Boost logo

Boost Users :

Subject: Re: [Boost-users] Thread local storage
From: Oliver Abert (abert_at_[hidden])
Date: 2009-03-29 15:56:10


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.

>
>> Is there any known problem with shared pointers on Mac OS?
>
> shared_ptr should use the same code on both platforms, either
> sp_counted_base_gcc_x86.hpp or sp_counted_base_gcc_ppc.hpp,
> depending on whether your CPU is Intel or PowerPC; see boost/detail/
> sp_counted_base.hpp. There is no Mac OS-specific path.

In both cases it is an Intel CPU. Unfortunatly I do not have a clue
what is going wrong on Mac OS. I am even using the exact same code on
Linux - there shouldn't be any difference.


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