static int pthrd_setthread_prio(int thred_prio)
{
int thrd_policy = SCHED_RR;
struct sched_param thr_prio;
int res=0;
thr_prio.sched_priority = thred_prio;
/* Try setting the thread/process priority via pthread */
res = pthread_setschedparam( pthread_self(),
thrd_policy,
(const struct sched_param*) &thr_prio);
//pthread_setschedparam has two return values 0 on successs, >0 on failure
if(res != 0)
{
deb_err("pthread_setschedparam failed withe error %d\n",res);
}
res = pthread_getschedparam(pthread_self(),
&thrd_policy,
&thr_prio);
if(res < 0)
{
deb_err("pthread_getschedparam failed\n");
}
printf("Thread policy %s priority %d process id %ld\n", \
((thrd_policy == SCHED_FIFO) ? "SCHED_FIFO" :
(thrd_policy == SCHED_RR) ? "SCHED_RR" :
(thrd_policy == SCHED_OTHER) ? "SCHED_OTHER" : "???"), thr_prio.sched_priority, syscall(SYS_gettid));
if ((thr_prio.sched_priority != thred_prio) || (thrd_policy != SCHED_RR))
{
deb_err("Thread priority == %d, this should be %d ERROR! using pthread\n",thr_prio.sched_priority ,thred_prio);
res=-1;
}
return (res);
}
С вышеприведенным кодом, используемым для установки приоритета нити и создания потока-2, моя система зависает в определенной точке.Проблема с pthread_setschedparam, система зависает
Я установил сеанс telnet и использовал команду «ps -ef», чтобы проверить приоритет в реальном времени для потока-2 и правильно увидеть его набор. Но на более позднем этапе его вызывающая система зависает. Я подтвердил это, удалив эту конкретную функцию и назначив приоритет по умолчанию для потока.
Может кто-нибудь, пожалуйста, дайте мне знать, если мне что-то не хватает?
Hi Olaf, не зависящий от встроенных устройств/систем, но где код реализован во встроенном устройстве. – Murali
Привет, Олаф и все спасибо за поддержку. Я попытался увеличить приоритет потока родительского потока, и он решил проблему. В нашем дизайне подобный thread2 (дочерний поток) передает данные в thread1 (родительский поток) путем непрерывного опроса на каждые 100 мсек. В противном случае оба должны иметь более высокий приоритет, мы в конечном итоге сталкиваемся с проблемой повесить. Увеличение проблемы с приоритетом до максимума устраняет эту проблему. – Murali
Как бы я хотел похвалиться, но я уверен, что это не я, чтобы поблагодарить. Поскольку он, очевидно, не связан со встроенным, я могу предложить удалить «встроенный» -tag? Просто не путать других. – Olaf