Boost logo

Boost :

From: u (js_at_[hidden])
Date: 2003-11-10 10:15:59


Hi,

we're using in our software extensive use of parsers based on spirits parsers.
These parsers are declared as global objects, so we use them in a thread-safe
manner by declaring BOOST_SPIRIT_THREADSAFE and PHOENIX_THREADSAFE. Works
perfect on Linux.
But not on Mac (OS 10.the.latest)) :( The program doesn't even start. In the
function

tss::tss(void (*cleanup)(void*))
{
    int res = 0;
    res = pthread_key_create(&m_key, cleanup);
    if (res != 0)
        throw thread_resource_error();
}

the pthread_key_create segfaults after the 128th constructor (thread limits on
Mac). Note: at program start! There's only one thread running... We don't
have more than 128 parsers (or maybe we do without knowing ;)

This limit of 128 won't be changed by Mac in the next time (years?), so we
have to find a way to avoid the construction of that amount of pthread_keys.

But how?

I would thank for any hint,
Jorge :)


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