У меня есть библиотека 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+ потоков. Я видел, как некоторые люди использовали двойную проверку блокировки для своих оболочек.
Может ли это быть более эффективным?
С уважением