should probably make thread functions threadsafe. and compile.

SVN revision: 50411
This commit is contained in:
Mike Blumenkrantz 2010-07-21 08:33:25 +00:00
parent 8528bb0179
commit 0ffbf90242
1 changed files with 34 additions and 5 deletions

View File

@ -664,8 +664,12 @@ ecore_thread_notify(Ecore_Thread *thread, const void *data)
EAPI int
ecore_thread_active_get(void)
{
int ret;
#ifdef EFL_HAVE_PTHREAD
return _ecore_thread_count;
pthread_mutex_lock(&_mutex);
ret = _ecore_thread_count;
pthread_mutex_unlock(&_mutex);
return ret;
#else
return 0;
#endif
@ -680,8 +684,12 @@ ecore_thread_active_get(void)
EAPI int
ecore_thread_pending_get(void)
{
int ret;
#ifdef EFL_HAVE_PTHREAD
return eina_list_count(_ecore_pending_job_threads);
pthread_mutex_lock(&_mutex);
ret = eina_list_count(_ecore_pending_job_threads);
pthread_mutex_unlock(&_mutex);
return ret;
#else
return 0;
#endif
@ -696,8 +704,12 @@ ecore_thread_pending_get(void)
EAPI int
ecore_thread_pending_long_get(void)
{
int ret;
#ifdef EFL_HAVE_PTHREAD
return eina_list_count(_ecore_pending_job_threads_long);
pthread_mutex_lock(&_mutex);
ret = eina_list_count(_ecore_pending_job_threads_long);
pthread_mutex_unlock(&_mutex);
return ret;
#else
return 0;
#endif
@ -712,8 +724,12 @@ ecore_thread_pending_long_get(void)
EAPI int
ecore_thread_pending_total_get(void)
{
int ret;
#ifdef EFL_HAVE_PTHREAD
return eina_list_count(_ecore_pending_job_threads) + eina_list_count(_ecore_pending_job_threads_long);
pthread_mutex_lock(&_mutex);
ret = eina_list_count(_ecore_pending_job_threads) + eina_list_count(_ecore_pending_job_threads_long);
pthread_mutex_unlock(&_mutex);
return ret;
#else
return 0;
#endif
@ -728,6 +744,11 @@ ecore_thread_pending_total_get(void)
EAPI int
ecore_thread_max_get(void)
{
int ret;
pthread_mutex_lock(&_mutex);
ret = _ecore_thread_count_max;
pthread_mutex_unlock(&_mutex);
return _ecore_thread_count_max;
}
@ -744,7 +765,9 @@ ecore_thread_max_set(int num)
/* avoid doing something hilarious by blocking dumb users */
if (num >= (2 * eina_cpu_count())) return;
pthread_mutex_lock(&_mutex);
_ecore_thread_count_max = num;
pthread_mutex_unlock(&_mutex);
}
/**
@ -755,7 +778,9 @@ ecore_thread_max_set(int num)
EAPI void
ecore_thread_max_reset(void)
{
pthread_mutex_lock(&_mutex);
_ecore_thread_count_max = eina_cpu_count();
pthread_mutex_unlock(&_mutex);
}
/**
@ -768,8 +793,12 @@ ecore_thread_max_reset(void)
EAPI int
ecore_thread_available_get(void)
{
int ret;
#ifdef EFL_HAVE_PTHREAD
return _ecore_thread_count_max - _ecore_thread_count);
pthread_mutex_lock(&_mutex);
ret = _ecore_thread_count_max - _ecore_thread_count;
pthread_mutex_unlock(&_mutex);
return ret;
#else
return 0;
#endif