Boost logo

Boost :

Subject: Re: [boost] [thread] terminating destructor
From: Daniela Engert (dani_at_[hidden])
Date: 2012-10-23 11:56:39


Am 23.10.2012 11:44, schrieb Andrzej Krzemienski:
> 2012/10/23 Rob Stewart <robertstewart_at_[hidden]>
>
>> On Oct 21, 2012, at 2:28 AM, "Vicente J. Botet Escriba" <
>> vicente.botet_at_[hidden]> wrote:
>>
>>> Le 20/10/12 20:41, Andrzej Krzemienski a écrit :
>>>> 2012/10/20 Vicente J. Botet Escriba <vicente.botet_at_[hidden]>
>>>>
>>>> What do you think of adding a thread_guard class that could interrupt
>> and
>>>>> join on the destructor?
>>>>>
>>>> By "adding", do you mean adding it to Boost? I suggested this
>> interruption
>>>> because I believed (apparently incorrectly) that class thread
>> represents a
>>>> tool ready to be used by "end-user" programmers. After this discussion I
>>>> realize that thread is a low-level primitive that you use for building
>>>> high-level concurrency constructs, but would rather not use it directly.
>>>> Following this view, anyone can build their own abstraction atop
>>>> boost::thread. I do not think the above thread_guard should be added
>> into
>>>> Boost. If I need it I can write it myself (and I would probably write it
>>>> differently; e.g. using variadic forwarding constructor).
>>> I agree that these classes are easy to write by the user. Maybe adding
>> them as examples of use in the documentation could help the user.
>>
>> I don't agree with the it's-easy-to-write-so-don't-add-it-to-Boost
>> philosophy. By adding such a class to Boost, you highlight the idea to
>> those that otherwise hadn't thought of it, and you standardize the I/F and
>> semantics.
>>
>
> I understand your reasoning, but the situation with boost::thread (and
> std::thread) is very particular: 'end-user' programmers will not use naked
> threads; they will also not use "thread guards" (as described above)
> because they are still too low-level, aren't they?

Even Bjarne Stroustup doesn't pretend to know what 'end-users' do. Most
likely, nobody does.

Looking at the code base in our company (VC10 or VC11 only) I can say
that none of my colleagues ever used something higher-level than
boost::thread - mostly for historical reasons and an 'it ain't broke so
leave it alone' attitude. If a tool like 'thread_guard' or the like came
pre-packaged with Boost, they'd happily swallow it rather than rolling
their own.

Ciao
    Dani


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk