有没有办法在Delphi中做到这一点,这与 other methods of threading in Delphi的比较(优点和缺点)是什么?
答案 0 :(得分:7)
您所指的“其他方法”似乎都在使用操作系统的底层线程功能 - 这是先发制人的。换句话说,选择你认为最方便的,这将是先发制人的。
获得非抢先(又称合作)线程需要一些额外的工作,通常是将线程转换为“光纤”。
答案 1 :(得分:5)
Windows的现代版本都是preemptive multitasking个操作系统。这意味着线程和进程(存在的进程需要至少一个执行线程)都被调度并抢先运行。
所以“有没有办法在Delphi中做到这一点”有以下答案:
最佳答案是使用TThread 或任何native Windows thread或其周围的包装。你将有先发制人的多线程。
链接中的所有模型都使用普通的Windows线程,我怀疑你的问题意味着你对不同的线程技术感到困惑,这些技术主要是通信或运行任务的技术(在其他线程上运行的工作。)如果在这种情况下,您可能想要更新您的问题或要求其他人寻找这些模型的解释。
答案 2 :(得分:2)
您是否看过Windows 7中引入的User-Mode Scheduling。光纤基本上不起作用。在MSDN网站上有很多关于此的信息,我似乎回想起第9频道的一些视频。