The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"pthread_cond_wait и загрузка процессора"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"pthread_cond_wait и загрузка процессора" 
Сообщение от leha emailИскать по авторуВ закладки(ok) on 03-Авг-05, 14:23  (MSK)
Есть замечательная функция pthread_cond_wait, которая, как заявлено, останавливает процесс до прихода сигнала "из вне" на его разблокирование функцией pthread_cond_signal. В книге "Программирование для Linux. Профессиональный подход" (Марк Митчелл и др.) даже дан пример на использование этих функций (глава 4.4.6). Там же авторы говорят о том, что pthread_cond_wait избавляет нас от траты процессорного времени впустую.
Самое смешное, то, что процесс действительно останавливается на этой функции  и ждет сигнала, НО при этом загрузка процессора 99%. Есть ли решение этой проблемы? Необходимо чтобы поток действительно остановился и разгрузил процессор.
  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "pthread_cond_wait и загрузка процессора" 
Сообщение от Maxim Kuznetsov Искать по авторуВ закладки on 03-Авг-05, 14:35  (MSK)
>Есть замечательная функция pthread_cond_wait, которая, как заявлено, останавливает процесс до прихода сигнала
>"из вне" на его разблокирование функцией pthread_cond_signal. В книге "Программирование для
>Linux. Профессиональный подход" (Марк Митчелл и др.) даже дан пример на
>использование этих функций (глава 4.4.6). Там же авторы говорят о том,
>что pthread_cond_wait избавляет нас от траты процессорного времени впустую.
>Самое смешное, то, что процесс действительно останавливается на этой функции  и
>ждет сигнала, НО при этом загрузка процессора 99%. Есть ли решение
>этой проблемы? Необходимо чтобы поток действительно остановился и разгрузил процессор.

а у вас в другой нити нет случайно бесконечного цикла ?
99% что есть..во кривых примерах любят применять while(1);


  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "pthread_cond_wait и загрузка процессора" 
Сообщение от leha emailИскать по авторуВ закладки(ok) on 03-Авг-05, 14:52  (MSK)

>а у вас в другой нити нет случайно бесконечного цикла ?
>99% что есть..во кривых примерах любят применять while(1);

Есть!
while(1)
{
...
pthread_cond_wait(cv, mutex); <- здесь я останавливаюсь
...
}

Факстически я стою в нужном месте (проверял) и while(1) не должен мешать.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "pthread_cond_wait и загрузка процессора" 
Сообщение от Maxim Kuznetsov Искать по авторуВ закладки on 03-Авг-05, 15:01  (MSK)
>
>>а у вас в другой нити нет случайно бесконечного цикла ?
>>99% что есть..во кривых примерах любят применять while(1);
>
>Есть!
>while(1)
>{
>...
>pthread_cond_wait(cv, mutex); <- здесь я останавливаюсь
>...
>}
>
>Факстически я стою в нужном месте (проверял) и while(1) не должен мешать.
>
я про ДРУГУЮ нить говорил...которая параллельно крутиться..
в большинстве примеров про pthread из книги в книгу качует
много ерунды навроде :
int main() {
pthread_create()
pthread_create()
while(1)
;
}

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "pthread_cond_wait и загрузка процессора" 
Сообщение от leha emailИскать по авторуВ закладки(ok) on 03-Авг-05, 15:12  (MSK)

>я про ДРУГУЮ нить говорил...которая параллельно крутиться..
>в большинстве примеров про pthread из книги в книгу качует
>много ерунды навроде :
>int main() {
>pthread_create()
>pthread_create()
>while(1)
> ;
>}
нет, там все банально:

(void) fgetc (stdin); //жду нажатия Enter
...
pthread_cond_signal(cv); // сигнал потоку, что можно продолжать
...
(void) fgetc (stdin); //жду нажатия Enter

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "pthread_cond_wait и загрузка процессора" 
Сообщение от leha emailИскать по авторуВ закладки(ok) on 03-Авг-05, 16:04  (MSK)

Мои глубокие извинения, как раз

(void) fgetc (stdin); //жду нажатия Enter

и нагружает процессор.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру