如何减少c应用程序中的cpu使用?

时间:2011-03-21 19:28:12

标签: c

我试图做一个简单的服务器应用程序,所以我需要循环直到theres一个连接然后再循环等等...但是当我这样做时,我得到50-100%的CPU使用率,而我使用互斥锁&条件,有没有办法在c中使用posix线程(pthreads)来避免这种情况?如果是的话,你能举个例子吗?

2 个答案:

答案 0 :(得分:4)

如果没有看到您的代码,就很难回答,但听起来您使用的是busy waiting。 在伪代码中: 忙碌的等待:

while (no connection) {
    check connection;
}

更好:

while (no connection) {
    sleep(100);
    check connection;
}

答案 1 :(得分:3)

你正在做的事情被称为忙碌的等待......这不是一个好主意。 如果您正在等待套接字事件,请改用select函数。

忙碌的等待绝不是一个好的解决方案。如果使用select,那么当给定文件描述符(或套接字)上发生事件时,程序将被唤醒。