代码之家  ›  专栏  ›  技术社区  ›  zebediah49

跳到时间结束量子

  •  0
  • zebediah49  · 技术社区  · 14 年前

    是否可以跳到进程分配的时间量的末尾?我有一个在共享内存上并行工作的程序,然后所有进程都需要等待其他进程完成并在下一步之前同步。每个进程最多只执行一次迭代,因此任何时间差都是最小的。

    microsleep几乎可以工作,但我非常肯定,即使是usleep(1)也会花费比我想要的更长的时间(到目前为止,我可以在大约1.5秒内完成5000次,因此一次测试大约需要20毫秒)。

    忙碌的等待似乎是个坏主意,尽管我最终可能会这样做。

    while(*everyoneDone != 0) {
        //give up rest of this time-quantum
    }
    

    它不需要是实时的,只需要快速。有什么想法吗?

    请注意,这将在多进程机器上运行,因为如果只有一个内核可供使用,那么现有的单线程版本的性能会更好。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jens Gustedt    14 年前

    不要这样做,在应用程序上下文中,主动等待几乎总是一个坏主意。使用 pthread_barrier_t

        2
  •  1
  •   caf    14 年前

    sched_yield() 可以 做你想要的。

    实际上,使用一个适当的同步原语(比如信号量)会更好。