int evthread_use_pthreads(void) { struct evthread_lock_callbacks cbs = { EVTHREAD_LOCK_API_VERSION, EVTHREAD_LOCKTYPE_RECURSIVE, evthread_posix_lock_alloc, evthread_posix_lock_free, evthread_posix_lock, evthread_posix_unlock }; struct evthread_condition_callbacks cond_cbs = { EVTHREAD_CONDITION_API_VERSION, evthread_posix_cond_alloc, evthread_posix_cond_free, evthread_posix_cond_signal, evthread_posix_cond_wait }; /* Set ourselves up to get recursive locks. */ if (pthread_mutexattr_init(&attr_recursive)) return -1; if (pthread_mutexattr_settype(&attr_recursive, PTHREAD_MUTEX_RECURSIVE)) return -1; evthread_set_lock_callbacks(&cbs); evthread_set_condition_callbacks(&cond_cbs); evthread_set_id_callback(evthread_posix_get_id); return 0; }
int evthread_use_windows_threads(void) { struct evthread_lock_callbacks cbs = { EVTHREAD_LOCK_API_VERSION, EVTHREAD_LOCKTYPE_RECURSIVE, evthread_win32_lock_create, evthread_win32_lock_free, evthread_win32_lock, evthread_win32_unlock }; evthread_set_lock_callbacks(&cbs); evthread_set_id_callback(evthread_win32_get_id); return 0; }
int evthread_use_windows_threads(void) { struct evthread_lock_callbacks cbs = { EVTHREAD_LOCK_API_VERSION, EVTHREAD_LOCKTYPE_RECURSIVE, evthread_win32_lock_create, evthread_win32_lock_free, evthread_win32_lock, evthread_win32_unlock }; struct evthread_condition_callbacks cond_cbs = { EVTHREAD_CONDITION_API_VERSION, evthread_win32_cond_alloc, evthread_win32_cond_free, evthread_win32_cond_signal, evthread_win32_cond_wait }; #ifdef WIN32_HAVE_CONDITION_VARIABLES struct evthread_condition_callbacks condvar_cbs = { EVTHREAD_CONDITION_API_VERSION, evthread_win32_condvar_alloc, evthread_win32_condvar_free, evthread_win32_condvar_signal, evthread_win32_condvar_wait }; #endif evthread_set_lock_callbacks(&cbs); evthread_set_id_callback(evthread_win32_get_id); #ifdef WIN32_HAVE_CONDITION_VARIABLES if (evthread_win32_condvar_init()) { evthread_set_condition_callbacks(&condvar_cbs); return 0; } #endif evthread_set_condition_callbacks(&cond_cbs); return 0; }