在C或无限睡眠中挂起主线程

时间:2014-05-17 03:21:21

标签: c multithreading sleep main

我希望我的线程永远运行。在代码的某处,如果收到'BYE',它将终止整个过程。当我使用while(TRUE)for(;;)时,我看到CPU使用率增加了25%。睡眠功能也有限。有什么想法吗?

int _tmain(int argc, _TCHAR* argv[])
{
    // Run the Standard Input/Output to reply to the super application 
    // (interface probably written in C#)
    thread_standardIO_i = pthread_create(
        &thread_standardIO_thrd, 
        NULL, 
        stdio_thread, 
        NULL);

    while (1){
    }

    //sleep(9999999);

    return 0;
}

2 个答案:

答案 0 :(得分:2)

为什么不只是pthread_join一些其他线程也将持续应用程序的生命周期,或pthread_cond_wait一个永远不会发出信号的condvar?这些操作将“永远”阻止该线程,与sleep不同,{{1}}只是要求它“在一段时间内”被唤醒。

答案 1 :(得分:1)

在无限循环内使用睡眠,睡眠值有助于设置无限循环消耗的CPU使用率。

while(1)
{
sleep(1); // set sleep value as u wish
}