1.set thread detach status
void sample()
{
pthread_attr_t thread_attr;
res= pthread_attr_init(&thread_attr);
if(res != 0){
perror("Attribute creation failed");
exit(EXIT_FAILURE);
}
//set detach state
res = pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED);
if(res != 0) {
perror("setdetachstate failed");
exit(EXIT_FAILURE);
}
//use attr when thread is created
res = pthread_create(&a_thread, &thread_attr, thread_function, (void*)message);
pthread_attr_destory(&thread_attr);
}
2. set thread schedule priority
#include <pthread.h>
void sample()
{
int max_priority;
int min_priority;
struct sched_param scheduling_value;
int res;
pthread_attr_t thread_attr;
res = pthread_attr_setschedpolicy(&thread_attr,SCHED_OTHER);
if(res != 0 ){
perror("pthread_attr_setschedpolicy failure");
exit(EXIT_FAILURE);
}
//look up prioriry range
max_priority = sched_get_priority_max(SCHED_OTHER);
min_priority = sched_get_priority_min(SCHED_OTHER);
scheduling_valule.sched_priority = min_priority;
res = pthread_attr_setschedparam(&thread_attr, & scheduling_value);
if(res != 0 ){
perror("pthread_attr_setschedparam failure");
exit(EXIT_FAILURE);
}
//...
}