代码之家  ›  专栏  ›  技术社区  ›  Erik Forbes

在特定时间段内阻塞线程的精确方法是什么?

  •  1
  • Erik Forbes  · 技术社区  · 17 年前

    我正在开发的系统需要使用一个工作项的IEnumerable,迭代每个工作项,并在它们之间等待一段时间。我希望在枚举站点尽可能地简化系统。也就是说,我想有一个可以在foreach块末尾调用的方法,该方法将在我指定的特定时间内阻塞——但我不想使用Thread。睡觉,因为不可能保证精度。

    2 回复  |  直到 17 年前
        1
  •  2
  •   Jorge Córdoba    17 年前

        2
  •  3
  •   Henk Holterman    17 年前

    既然如此,为什么要人为拖延?只需在它到来时使用它,让调度器在你的线程之间分配工作。

    如果你想要一个非常精确的等待时间,我建议你使用Thread。睡觉(时间-20ms),然后忙着等待合适的时间做你的工作。

    只有实时操作系统才能给你这样的精度。你可以假设线程。Sleep的精度约为20毫秒,因此理论上你可以一直睡到所需的时间——实际时间约为20秒,然后旋转20毫秒,但你必须浪费这20毫秒。即使这样也不能保证你会得到实时结果,调度器可能会在你的线程即将执行RELVANT部分时(旋转后)将其取出

    推荐文章