nice
के लिए आदमी पृष्ठ कहते हैं, "अच्छा() बुला प्रक्रिया के लिए अच्छा मूल्य तो, हम इसका इस्तेमाल pthread_create
अच्छा है() थ्रेड प्राथमिकता या प्रक्रिया प्राथमिकता को बदलने के लिए उपयोग किया जाता है? ।? :
संपादित द्वारा बनाई गई एक धागा के लिए अच्छा मान बदलने के लिए कर सकते हैं करने के लिए इंक कहते हैं ऐसा लगता है कि हम प्रति थ्रेड अच्छा मूल्य निर्धारित कर सकते हैं।
मैंने एक आवेदन लिखा, विभिन्न धागे के लिए अलग-अलग अच्छे मूल्य को निर्धारित किया, और पाया कि "अच्छा" धागा कम प्राथमिकता के साथ निर्धारित किया गया है। आउटपुट की जांच, मैं पाया गया कि स्ट्रिंग "उच्च प्राथमिकता ................" अधिक बार आउटपुट प्राप्त करें।
void * thread_function1(void *arg)
{
pid_t tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, -10);
printf("tid of high priority thread %d , %d\n",tid ,getpriority(PRIO_PROCESS,tid));
while(1){
printf("high priority ................\n");
}
}
void * thread_function(void *arg)
{
pid_t tid = syscall(SYS_gettid);
int ret = setpriority(PRIO_PROCESS, tid, 10);
printf("tid of low priority thread %d , %d \n",tid ,getpriority(PRIO_PROCESS,tid));
while(1)
{
printf("lower priority\n");
}
}
int main()
{
pthread_t id1;
pthread_t id2;
pid_t pid = getpid();
pid_t tid = syscall(SYS_gettid);
printf("main thread : pid = %d , tid = %d \n" , pid, tid);
pthread_create(&id1, NULL, thread_function1, NULL);
pthread_create(&id2, NULL,thread_function, NULL);
pthread_join(id1, NULL);
pthread_join(id2, NULL);
}
लेकिन क्यों कुछ जेवीएम कार्यान्वयन में, जावा थ्रेड प्राथमिकता में 1: 1 मैपिंग अच्छा मूल्य है? //www.javamex.com/tutorials/threads/priority_what।shtml इसके अलावा, मैंने एक एप्लीकेशन लिखा, अलग-अलग थ्रेड के लिए अंतर को अच्छी तरह से सेट किया, और देखा कि आउटपुट कितनी बार है यह जांचकर निसर थ्रेड को कम प्राथमिकता के साथ निर्धारित किया गया है। – pierrotlefou
@pierr, दिलचस्प, यह पता चला है कि एनपीटीएल और लिनक्स थ्रेड दोनों POSIX.1 का उल्लंघन करते हैं। मैं अपना जवाब अपडेट करूंगा। –
@ FrédéricHamidi क्या यह अभी भी वही मामला है कि लिनक्स पर धागे एक सामान्य अच्छा मूल्य साझा नहीं करते हैं? – blueskin