POSIX says never to compare pthread_t directly

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16501 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Mathieu Rene 2010-01-24 19:23:58 +00:00
parent 4f39fe92ab
commit 62341a9526
3 changed files with 17 additions and 4 deletions

View File

@ -50,6 +50,12 @@ typedef pthread_t switch_thread_id_t;
SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void);
/*! \brief Compare two thread ids
* \param tid1 1st Thread ID to compare
* \param tid2 2nd Thread ID to compare
*/
SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_id_t tid2);
/*
The pieces of apr we allow ppl to pass around between modules we typedef into our namespace and wrap all the functions

View File

@ -79,6 +79,16 @@ SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void)
#endif
}
SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_id_t tid2)
{
#ifdef WIN32
return (tid1 == tid2);
#else
return apr_os_thread_equal(tid1, tid2);
#endif
}
SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *p)
{
apr_pool_clear(p);

View File

@ -1143,10 +1143,7 @@ SWITCH_DECLARE(void) switch_core_session_disable_heartbeat(switch_core_session_t
SWITCH_DECLARE(switch_bool_t) switch_core_session_in_thread(switch_core_session_t *session)
{
if (switch_thread_self() == session->thread_id) {
return SWITCH_TRUE;
}
return SWITCH_FALSE;
return switch_thread_equal(switch_thread_self(), session->thread_id) ? SWITCH_TRUE : SWITCH_FALSE;
}
static void *SWITCH_THREAD_FUNC switch_core_session_thread(switch_thread_t *thread, void *obj)