Threadsafe-оболочка для функций API-интерфейса pthread - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть библиотека C для Linux (* .so), которая должна обернуть функции pthread, чтобы я мог создать небольшой инструмент измерения конкуренции за блокировку. В настоящее время он использует отложенную оценку, и функции выглядят примерно так:

int pthread_mutex_lock (pthread_mutex_t * mutex )
{
    static int ( *pthread_mutex_lock_internal ) ( pthread_mutex_t * mutex ) = NULL;

    if (pthread_mutex_lock_internal == NULL)
    {
        pthread_mutex_lock_internal = dlsym(RTLD_NEXT, "pthread_mutex_lock");

        if (real_pthread_mutex_lock == NULL)
        {
            abort();
        }
    }

    return (pthread_mutex_lock_internal(mutex));
}

У меня есть следующие вопросы:

  • Безопасна ли эта реализация потока? Он предназначен для программы с 150+ потоков. Я видел, как некоторые люди использовали двойную проверку блокировки для своих оболочек.

  • Может ли это быть более эффективным?

С уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...