Delphi中的抢占式多线程

lke*_*ler 4 delphi multithreading preemptive

我已经在这里这里阅读了抢先式多线程.

有没有办法在Delphi中这样做?这与Delphi中的其他线程方法相比(优点和缺点)如何?

Jer*_*fin 7

你所指的"其他方法"似乎都在使用操作系统的底层线程功能 - 这是先发制人的.换句话说,选择你认为最方便的,它将是先发制人的.

获得非抢先(也称为协作)线程需要一些额外的工作,通常是通过将线程转换为"光纤".


Dav*_*vid 5

现代版本的Windows都是抢占式多任务操作系统.这意味着线程和进程(存在的进程需要至少一个执行线程)都被调度并抢先运行.

所以"有没有办法在Delphi中做到这一点"有以下答案:

  • 您的单线Delphi应用程序已经预先与其他应用程序一起安排
  • 如果您编写多线程Delphi应用程序,它也将是. 您必须付出相当大的努力才能编写非抢占式模型,例如应用程序中的协作式线程模型.一种方法可能是使用协同程序 ; 这是使用Delphi 7的一个例子.

最好的答案是使用TThread或任何本机Windows线程或它们周围的包装.您将拥有抢占式多线程.

链接中的所有模型都使用普通的Windows线程,我怀疑你的问题意味着你对不同的线程技术感到困惑,这些技术主要是通信或运行任务的技术(在其他线程上运行的工作.)如果这是例如,您可能想要更新您的问题或要求其他人寻找这些模型的解释.