проблемы с pthread_cond_timedwait
От: k55 Ниоткуда  
Дата: 13.09.12 08:27
Оценка:
День добрый.
После переезда на nptl стала появляться бага "busy loop".

Идея кода: случается нажатие кнопки (взводим событие и задаем abstime) и до тех пор пока ее не отпустили имитируется ее нажате.
Код такой:
    pthread_mutex_lock(&mutex);
    while (1)
    {
        // if we don't have any deadline, then just sleep
        if ( abstime.tv_sec == 0 && abstime.tv_nsec == 0 )
        {
            pthread_cond_wait(&cond, &mutex);
        }
        else
        {
            int rc;
            rc = pthread_cond_timedwait(&cond, &mutex, &abstime);
            if (rc == ETIMEDOUT)
            {
               //do some
            }
        }
    }


Иногда поток который исполняет этот код начинает жрать процессорное время до 40% ну и как следствие все остальное мрет. Срабатывает ватч дог и все умирают

Есть у кого идеи?

p.s. Погуглил и нашел вот это
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=673711
но ввиду своей ограниченности не могу понять
1) есть ли эта бага в glibc 2.12.2 который я использую? Если что архитектура mips, ядро 2.6.37
2) если 1) истина, то где найти патч и пофиксить glibc. Использовать свежий glibc — вопрос решаемый не мной и не мгновенно.


Спасибо!
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.