在 c 中的线程中使用 Sleep()

Adi*_*Jha 0 c

我希望我的程序打印

  • 第一秒你好
  • 第二秒你好
  • 第三秒你好。

所以我写了下面的代码。实际发生的是

  • 第一秒 - 什么都没有
  • 第二秒 - 什么都没有
  • 第三秒 - 你好你好你好

如何纠正?

实际发生的是我

void *myThreadFun(void *vargp)
{
    while (1)
    {
        sleep(1);
        printf("hello");
    }
}
Run Code Online (Sandbox Code Playgroud)

dlm*_*tei 5

试试这个,您需要刷新流,这可以通过fflush或添加\n.

printf并不总是write出于性能原因,因为系统调用成本很高。它宁愿缓冲它并在需要时立即写入。通过添加\nfflush使缓冲区每次都打印在标准输出上。

void *myThreadFun(void *vargp)
{
    while(1){
        printf("hello\n");
        sleep(1);
    }
}
Run Code Online (Sandbox Code Playgroud)