|
Boost : |
Subject: Re: [boost] thread_safe_ptr class interest request
From: Giovanni Piero Deretta (gpderetta_at_[hidden])
Date: 2010-07-28 11:48:53
On Wed, Jul 28, 2010 at 2:44 PM, Philippe Vaucher
<philippe.vaucher_at_[hidden]> wrote:
> Hello,
>
> I've made a thread_safe_ptr class available at http://codepad.org/PxDEGaFm
>
> The idea is to use it like so:
>
> std::string data = "Hello world;";
> thread_safe_ptr<std::string> data_ptr(&data);
>
> void thread1()
> {
> data_ptr->resize(3);
> }
>
> void thread2()
> {
> *data_ptr = "yeah";
> }
>
> boost::thread t1(&thread1);
> boost::thread t2(&thread1);
> t1.join(); t2.join();
>
>
std::stack<int> deq = ...;
thread_safe_ptr<std::stack<int> > data_ptr(&data);
int pop() {
int my_top = data_ptr->top();
data_ptr->pop(); // will this pop my_top?
return my_pop;
}
Unfortunately the interface of a class must be designed to be
threadsafe, you can't just bolt on thread safety by locking every
member function. Such a wrapper might have some limited use, but it
could lead to a false sense of security.
Just my 0.2
-- gpd
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk