LINUX.ORG.RU

Запуск потока


0

0

Создаю поток: pthread_create(...) и хочу чтоб он сразу начал выполняться, для этого,как я понимаю, его приоритет должен быть выше породившего процесса. Делаю так:
pthread_attr_t attr;
..............
pthread_attr_init(&attr);
pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
pthread_attr_setschedpolicy(&attr, SCHED_RR);
sp.sched_priority = -5;
pthread_attr_setschedparam(&attr, &sp);
err = pthread_create(&tid, &attr, rcv_dma_dat, NULL);
Возвращает - EINVAL.
Если делаю:
err = pthread_create(&tid, NULL, rcv_dma_dat, NULL);
Все нормально.
А, если после создания, поставлю sleep(2), то еще поток и выполнится.
В чем дело ? поясните....


В названии темы ошибся. Надо - Запуск потока !!!!

senjy
() автор топика

в linux любой вновь созданный процесс/поток получает
преимущество перед родителем, т.е. управление передается
ему (если родитель не выработал time-slice и нет более
приоритетного процесса).

кроме того, обычный пользователь не может увеличить
приоритет процесса, хотя в последних версиях ядра
появился RLIMIT_NICE.

idle ★★★★★
()
Ответ на: комментарий от idle

Спасибо... Поднял приоритет процесса, все, поток запустился...

senjy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.