Boost logo

Boost Users :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2004-12-12 15:08:16


Roland Schwarz wrote:
> Peter Dimov wrote:
>
>>
>> pthread_self gives you a full pthread_t, which you can use as input
>> to pthread_join, pthread_cancel, pthread_setschedparam; you can also
>> give this pthread_t to another thread and it remains valid.
>>
>> boost::thread::thread() doesn't give you a boost::thread*, the
>> boost::thread surrogate it creates is valid only within the current
>> thread, and it can only be compared to another boost::thread.
>>
>> pthread_self "always works"; it does not depend on some user not
>> destroying a boost::thread object. A boost::thread* in
>> thread-specific storage does not have this property.
>
> Ah, I see. Thank you. Now I understand why W.E.Kempf has given up on
> the bool m_joinable;
> attribute in his newer work on thread. He introduced a thread_data
> structure
> that lives in tls storage and serves the purposes of pthread_self.
> The default constructor now essentially is:
> thread::thread()
> : m_handle(0)
> {
> thread_data* tdata = thread_data::get_current();
> tdata->addref();
> m_handle = tdata;
> }
> And this does give back something that can be used as long as the
> thread is alive.

Exactly, the newer boost::thread is essentially a thread_ref. Unfortunately
Bill abandoned Boost.Threads shortly after. ;-)


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