I cannot set Pthread priority using pthread_attr_setschedparam() . I tried to solve this problem, but could not do it. I also consulted my tutorial, which also uses the same function. I copied this code from a book. Can you tell me how to set thread priority?
Here is the code:
void *Func(void *arg); int main() { pthread_t tid[5]; pthread_attr_t *tattr; struct sched_param param; int pr,error,i; do { if( (tattr=(pthread_attr_t *)malloc(sizeof(pthread_attr_t)) )==NULL) { printf("Couldn't allocate memory for attribute object\n"); } }while(tattr==NULL); if(error=pthread_attr_init(tattr)) { fprintf(stderr,"Attribute initialization failed with error %s\n",strerror(error)); } for(i=0;i<5;i++) { //scanf("%d",&pr); error = pthread_attr_getschedparam(tattr,¶m); if(error!=0) { printf("failed to get priority\n"); } param.sched_priority=10; error=pthread_attr_setschedparam(tattr,¶m); if(error!=0) { printf("failed to set priority\n"); } /* if(i%2==0) { if(error=pthread_attr_setdetachstate(tattr,PTHREAD_CREATE_DETACHED)) { fprintf(stderr,"Failed to set thread attributes with error %s\n",strerror(error)); } } else if(error=pthread_attr_setdetachstate(tattr,PTHREAD_CREATE_JOINABLE)) { fprintf(stderr,"Failed to set thread attributes with error %s\n",strerror(error)); } */ pthread_create(&tid[i],tattr,Func,NULL); printf("waiting for thread %d\n",i); } free(tattr);// release dynamically allocated memory printf("All threads terminated\n"); return 0; } void *Func(void *arg) { printf("inside\n"); pthread_attr_t *tattr=(pthread_attr_t *)arg; int state,error; struct sched_param param; error=pthread_attr_getdetachstate(tattr,&state); if(error==0 && state==PTHREAD_CREATE_DETACHED) { printf(" My state is DETACHED\n"); } else if(error==0 && state==PTHREAD_CREATE_JOINABLE) { printf(" My state is JOINABLE\n"); } error=pthread_attr_getschedpolicy(tattr,¶m); if(error==0) { printf(" My Priority is %d\n",param.sched_priority); } return NULL; }
source share