c - c 线程中的 Sleep()

标签 c

我希望我的程序打印

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

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

  • 第一秒 - 没有
  • 第二秒 - 没有
  • 第三秒 - HelloHelloHello

如何纠正?

实际发生的是我

void *myThreadFun(void *vargp)
{
    while (1)
    {
        sleep(1);
        printf("hello");
    }
}

最佳答案

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

出于性能原因,

printf 并不总是调用 write,因为系统调用的成本很高。它而是缓冲它并在需要时立即写入。通过添加 \nfflush 使缓冲区每次都打印在 stdout 上。

void *myThreadFun(void *vargp)
{
    while(1){
        printf("hello\n");
        sleep(1);
    }
}

关于c - c 线程中的 Sleep(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45034244/

相关文章:

c - 拆分链表

c - 如何分配从函数返回的变量

c - 生产者消费者与消费者陷入僵局

针对写入优化的并发数据结构

c - 从 C 函数返回字符串

c++ - bitwise not操作的编译器优化

c - 在 Ubuntu 16.04 上找不到 printf.c

c++ - TRUE 和 FALSE 宏的奇怪定义

c - sys_schedule() 在 Minix 3.1.8 中做什么?

c - 非终止 while 循环,同时使用 recv