Как уменьшить использование процессора в приложении c? - PullRequest
0 голосов
/ 21 марта 2011

Я пытаюсь создать простое серверное приложение, поэтому мне нужно зацикливаться, пока нет соединения, затем зациклить снова и т. Д ..., но когда я это делаю, я получаю 50-100% использования ЦП, в то время как я использую мьютексы и условия Есть ли способ избежать этого, используя Posix Threads (Pthreads) в C? если да, можете ли вы привести пример?

Ответы [ 2 ]

4 голосов
/ 21 марта 2011

Не видя ваш код, трудно ответить, но похоже, что вы используете заняты ожиданием .В псевдокоде: Ожидание при занятости:

while (no connection) {
    check connection;
}

Лучше:

while (no connection) {
    sleep(100);
    check connection;
}
3 голосов
/ 21 марта 2011

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

Оживленное ожидание никогда не бывает хорошим решением. Если вы используете select, то ваша программа будет активирована, когда в заданном файловом дескрипторе (или сокете) произошло событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...