nice
için manuel sayfa ") (güzel çağıran süreci için güzel değer Yani, biz pthread_create
, iş parçacığı önceliğini veya işlem önceliğini değiştirmek için güzel() kullanılıyor mu? .? :
DÜZENLEME tarafından oluşturulan bir iş parçacığı için güzel değerini değiştirmek için kullanabilirsiniz üzere inc ekler
Her iplik için güzel değeri ayarlayabileceğimiz görünüyor. Farklı bir iş parçacığı için farklı bir güzel değer ayarlayan bir uygulama yazdım ve "daha güzel" iş parçacığının daha düşük öncelikli olarak programlandığını gözlemledim. "yüksek öncelikli .............." dizesinin daha sık çıktısını bulmuştur.
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);
}
Ancak, bazı JVM uygulamalarında, java iş parçacığı önceliği, 1: 1 eşleme değerine sahip olur mu? //www.javamex.com/tutorials/threads/priority_what.shtml Ayrıca, farklı iş parçacığı için fark güzel bir değer ayarlayarak bir uygulama yazdım ve daha iyi iş parçacığının çıktıların ne sıklıkta olduğunu kontrol ederek daha düşük önceliğe sahip olduğunu gözlemledim. – pierrotlefou
@pierr, ilginç, hem NPTL hem de Linux iş parçacıklarının POSIX.1'i ihlal ettiği ortaya çıkıyor. Cevabımı güncelleyeceğim. –
@ FrédéricHamidi Linux'taki iş parçacıklarının ortak hoş bir değeri paylaşmadığı hala aynı durum mu? – blueskin