void hts_thread_create_joinable(const char *title, hts_thread_t *p, void *(*func)(void *), void *aux, int prio) { pthread_attr_t attr; pthread_attr_init(&attr); #if defined(linux) if(prio <= -10 && posix_set_thread_priorities) { pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED); pthread_attr_setschedpolicy(&attr, SCHED_RR); struct sched_param param = {0}; param.sched_priority = sched_get_priority_max(SCHED_RR); pthread_attr_setschedparam(&attr, ¶m); } #endif pthread_create(p, &attr, thread_trampoline, make_trampoline(title, func, aux, prio)); pthread_attr_destroy(&attr); if(gconf.enable_thread_debug) tracelog(TRACE_NO_PROP, TRACE_DEBUG, "thread", "Created thread: %s", title); }
void hts_thread_create_joinable(const char *title, hts_thread_t *p, void *(*func)(void *), void *aux, int prio) { pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr, 128 * 1024); pthread_create(p, &attr, thread_trampoline, make_trampoline(title, func, aux)); pthread_attr_destroy(&attr); TRACE(TRACE_DEBUG, "thread", "Created thread: %s", title); }
void hts_thread_create_joinable(const char *title, hts_thread_t *p, void *(*func)(void *), void *aux, int prio) { pthread_attr_t attr; pthread_attr_init(&attr); pthread_create(p, &attr, thread_trampoline, make_trampoline(title, func, aux, prio)); pthread_attr_destroy(&attr); if(gconf.enable_thread_debug) TRACE(TRACE_DEBUG, "thread", "Created thread: %s", title); }
void hts_thread_create_detached(const char *title, void *(*func)(void *), void *aux, int prio) { pthread_t id; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_attr_setstacksize(&attr, 128 * 1024); pthread_create(&id, &attr, thread_trampoline, make_trampoline(title, func, aux)); pthread_attr_destroy(&attr); TRACE(TRACE_DEBUG, "thread", "Created detached thread: %s", title); }
void hts_thread_create_detached(const char *title, void *(*func)(void *), void *aux, int prio) { pthread_t id; pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_create(&id, &attr, thread_trampoline, make_trampoline(title, func, aux, prio)); pthread_attr_destroy(&attr); if(gconf.enable_thread_debug) tracelog(TRACE_NO_PROP, TRACE_DEBUG, "thread", "Created detached thread: %s", title); }