httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simone Caruso <i...@simonecaruso.com>
Subject Help with apr mutex
Date Mon, 28 Feb 2011 17:26:17 GMT
Hi all,

I wrote a simple cache inside my module with apr_shm and apr_rmm, but I have problems with
apr mutex...

I have this peace of code:

static apr_global_mutex_t *mtx = NULL;
static void module_translate_name(request_rec *r)
{
	if(apr_global_mutex_trylock(mtx) == APR_EBUSY)
		ap_log_rerror(APLOG_MARK, APLOG_WARNING|APLOG_NOERRNO, 0, r, "Memory Locked!! ");
	apr_global_mutex_lock(mtx);
	element = get_from_cache();
	if(element == NULL){
		element = insert_into_cache();
		strcpy(element.name,"name\0");
	}
	apr_global_mutex_unlock(mtx);
}

static void module_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec
*s)
{
	result = apr_global_mutex_create(&mtx, "cache_entries_lck", APR_LOCK_DEFAULT, p);
}


static void mod_vhost_ldap_child_init(apr_pool_t * p, server_rec * s)
{
	apr_status_t ret;
	ret = apr_global_mutex_child_init(&mtx, "cache_entries_lck", p);
}



During my tests with 'ab -c 15 -n 3000' i NEVER get the "Memory Locked" error in logs, plus
i get duplicated entries in 
cache but I don't know why!

Does someone have an idea? (please consider i use apr_global_mutex_trylock() only for test)
Regards.

-- 
Simone Caruso

Mime
View raw message