[omniORB] signals and mutex's

Matthew Berry mberry@mweb.co.za
Fri, 02 Mar 2001 10:29:32 +0200


I read somewhere that a pthread mutex should not be used in a signal handler
as it may result in deadlock.

The code I have implemented is listed below. Is this a problem?

....

void shutDownHandler(int signal)
{
    static bool signalled = false;
    static omni_mutex mutex;

    omni_mutex_lock lock(mutex)

    if (!signalled)
    {
        shut_down_condition.signal();

        signalled = true;
    }
}


....


int main()
{
    ...
        boa->impl_is_ready(0, 1);        // do not block

        signal(SIGINT, shutDownHandler);

        shut_down_condition.wait();
        shut_down_condition.unlock();

        server->_dispose();
        boa->impl_shutdown();
        ...
}