make the uses of pthread_once faster by checking the once var first
This commit is contained in:
parent
16adff318d
commit
07cec0a44d
4 changed files with 19 additions and 8 deletions
|
|
@ -49,7 +49,8 @@ lumiera_error_tls_init (void)
|
|||
lumiera_err
|
||||
lumiera_error_set (lumiera_err nerr)
|
||||
{
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
if (lumiera_error_initialized == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
|
||||
lumiera_err err = pthread_getspecific (lumiera_error_tls);
|
||||
if (!err)
|
||||
|
|
@ -62,7 +63,8 @@ lumiera_error_set (lumiera_err nerr)
|
|||
lumiera_err
|
||||
lumiera_error (void)
|
||||
{
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
if (lumiera_error_initialized == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
|
||||
lumiera_err err = pthread_getspecific (lumiera_error_tls);
|
||||
if (err)
|
||||
|
|
@ -74,7 +76,8 @@ lumiera_error (void)
|
|||
lumiera_err
|
||||
lumiera_error_peek (void)
|
||||
{
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
if (lumiera_error_initialized == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&lumiera_error_initialized, lumiera_error_tls_init);
|
||||
|
||||
return pthread_getspecific (lumiera_error_tls);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,7 +59,9 @@ lumiera_recmutex_init (LumieraMutex self, const char* purpose, struct nobug_flag
|
|||
{
|
||||
if (self)
|
||||
{
|
||||
pthread_once(&recursive_mutexattr_once, recursive_mutexattr_init);
|
||||
if (recursive_mutexattr_once == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&recursive_mutexattr_once, recursive_mutexattr_init);
|
||||
|
||||
pthread_mutex_init (&self->mutex, &recursive_mutexattr);
|
||||
NOBUG_RESOURCE_HANDLE_INIT (self->rh);
|
||||
NOBUG_RESOURCE_ANNOUNCE_RAW (flag, "recmutex", purpose, self, self->rh);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,8 @@ lumiera_resourcecollector_run (enum lumiera_resource which, enum lumiera_resourc
|
|||
{
|
||||
TRACE (resourcecollector);
|
||||
|
||||
pthread_once (&lumiera_resourcecollector_once, lumiera_resourcecollector_init_);
|
||||
if (lumiera_resourcecollector_once == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&lumiera_resourcecollector_once, lumiera_resourcecollector_init_);
|
||||
|
||||
LUMIERA_MUTEX_SECTION (resourcecollector, &lumiera_resourcecollector_lock)
|
||||
{
|
||||
|
|
@ -118,7 +119,8 @@ lumiera_resourcecollector_run (enum lumiera_resource which, enum lumiera_resourc
|
|||
LumieraResourcehandler
|
||||
lumiera_resourcecollector_register_handler (enum lumiera_resource resource, lumiera_resource_handler_fn handler, void* data)
|
||||
{
|
||||
pthread_once (&lumiera_resourcecollector_once, lumiera_resourcecollector_init_);
|
||||
if (lumiera_resourcecollector_once == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&lumiera_resourcecollector_once, lumiera_resourcecollector_init_);
|
||||
|
||||
TRACE (resourcecollector);
|
||||
|
||||
|
|
|
|||
|
|
@ -122,7 +122,9 @@ lumiera_tmpbuf_init (void)
|
|||
void
|
||||
lumiera_tmpbuf_freeall (void)
|
||||
{
|
||||
pthread_once (&lumiera_tmpbuf_tls_once, lumiera_tmpbuf_init);
|
||||
if (lumiera_tmpbuf_tls_once == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&lumiera_tmpbuf_tls_once, lumiera_tmpbuf_init);
|
||||
|
||||
struct lumiera_tmpbuf_struct* buf = pthread_getspecific (lumiera_tmpbuf_tls_key);
|
||||
if (buf)
|
||||
{
|
||||
|
|
@ -137,7 +139,9 @@ lumiera_tmpbuf_freeall (void)
|
|||
void*
|
||||
lumiera_tmpbuf_provide (size_t size)
|
||||
{
|
||||
pthread_once (&lumiera_tmpbuf_tls_once, lumiera_tmpbuf_init);
|
||||
if (lumiera_tmpbuf_tls_once == PTHREAD_ONCE_INIT)
|
||||
pthread_once (&lumiera_tmpbuf_tls_once, lumiera_tmpbuf_init);
|
||||
|
||||
struct lumiera_tmpbuf_struct* buf = pthread_getspecific (lumiera_tmpbuf_tls_key);
|
||||
if (!buf)
|
||||
pthread_setspecific (lumiera_tmpbuf_tls_key,
|
||||
|
|
|
|||
Loading…
Reference in a new issue