|
Boost-Build : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-09-07 09:55:28
Vladimir Prus <ghost_at_[hidden]> writes:
> On Monday 04 September 2006 16:34, David Abrahams wrote:
>> David Abrahams <dave_at_[hidden]> writes:
>> > [Taking this back to the boost.build list where it belongs]
>> >
>> > "MANSION, James, GBM" <James.MANSION_at_[hidden]> writes:
>> >> # Even where Python itself uses pthreads, it never allows
>> >> # extension modules to be entered concurrently (unless they
>> >> # explicitly give up the interpreter lock). Therefore,
>> >> # extension modules don't need the efficiency overhead of
>> >> # threadsafe code as produced by <threading>multi, and we
>> >> # handle libpthread along with other libraries here.
>> >>
>> >> Is that absolutely right? I mean, errno is sometimes different if
>> >> you are a single-threaded or multi-threaded build,
>> >
>> > In what way is errno different?
>>
>> James wasn't allowed to post to this list, and I quite impolitely
>> forwarded his comments here, for which I have apologized. But he has
>> a point. Suffice it to say that he convinced me <threading>multi is
>> required in general, even if on many systems it can probably be left
>> out for many programs. Basically -mt has to be assumed to change the
>> ABI used by the standard library.
>
> The errno point is interesting.
It's not just errno, as James pointed out to me in private email. The
"usual implementation" of many standard libraries is engineered to
make errno work properly even if you link ST code with a MT code, but
that doesn't mean it's a workable practice in general.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk