सेट करने में असमर्थ मैं pthread_attr_setschedparam()
का उपयोग करके पर्थ्रेड प्राथमिकता सेट करने में असमर्थ हूं। मैंने इस मुद्दे को हल करने की कोशिश की है लेकिन यह नहीं कर सका। मैंने अपनी पाठ्य पुस्तक से भी परामर्श लिया जो एक ही समारोह का उपयोग करता है। मैंने इस कोड को पुस्तक से कॉपी किया है। क्या आप मुझे बता सकते हैं कि थ्रेड प्राथमिकता कैसे सेट करें?पर्थ्रेड प्राथमिकता
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;
}
आप क्या परिणाम हो रही है मिल सकती है? आप कैसे जानते हैं कि यह काम नहीं कर रहा है? – Celada
धागा की प्राथमिकता निर्धारित है या नहीं, यह जांचने के लिए मैं 'प्राथमिकता पाने में विफल रहा' प्रिंट करता हूं। और यह हमेशा मुद्रित होता है, जिसका अर्थ है प्राथमिकता सेट नहीं है। – Alfred
क्या आप रूट के रूप में चल रहे हैं? केवल रूट प्राथमिकता बढ़ा सकता है (अच्छा मूल्य कम करें) – anishsane