$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
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.