title: Unable to set Pthread Priority
body: <p>I am unable to set Pthread priority using <code>pthread_attr_setschedparam()</code>. I have tried to resolve this issue but couldn't do it. I also consulted my text book which also uses the same function. I copied this code from book. Can you tell me how to set thread priority?</p>
  
  <p>Here is the code:</p>
  
  <pre><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&lt;5;i++)
  {
      //scanf("%d",&amp;pr);
          error = pthread_attr_getschedparam(tattr,&amp;param);
  
          if(error!=0)
          {
              printf("failed to get priority\n");
          }
  
          param.sched_priority=10;
          error=pthread_attr_setschedparam(tattr,&amp;param);
  
          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(&amp;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,&amp;state);
  
  if(error==0 &amp;&amp; state==PTHREAD_CREATE_DETACHED)
  {
      printf(" My state is DETACHED\n");
  }
  else
      if(error==0 &amp;&amp; state==PTHREAD_CREATE_JOINABLE)
      {
          printf(" My state is JOINABLE\n");
      }
  
  error=pthread_attr_getschedpolicy(tattr,&amp;param);
  
  if(error==0)
  {
      printf(" My Priority is %d\n",param.sched_priority);
  }
  
  return NULL;
  }
  </code></pre>