Tom*_*omR 2 delphi delphi-2009 critical-section
我正在更新 Delphi (Delphi 2009) 代码,它只使用TCriticalSection.Acquire/Release对,而不是Enter/Release or Leave对。我的问题是 -Acquire和之间有什么区别Enter?
Delphi 文档相当晦涩——它甚至试图说,没有区别:
Acquire:将临界区绑定到调用线程。调用 Acquire 以阻止所有其他线程获取此临界区,直到调用 Release 或 Leave 方法。Acquire 的作用与 Enter 方法相同。
Enter:当调用线程进入线程敏感部分时阻塞其他线程。调用 Enter 以阻止所有其他线程进入受此临界区保护的代码,直到调用 Leave 或 Release 方法。Enter 调用 Acquire 方法将临界区绑定到调用线程。
我想要方法TryAcquire,但没有这样的方法,所以 - 我正在考虑Acquire用TryEnter... Sleep...循环替换我的所有调用,这是受 TryEnter 调用努力的数量限制。但可以肯定的是什么会hapen,我应该知道的区别Acquire和Enter?这是什么区别?为什么有两种不同的方法?
因为TCriticalSection没有区别。Enter实现为对 的调用Acquire。同样,Leave它被实现为对 的调用Release。
该TryEnter方法是在 Delphi 2009 之后添加的。但它只是 Windows API 调用的简单包装TryEnterCriticalSection。您可以自己直接调用该函数。你可以,例如,使用一个类帮手介绍TryEnter到的范围TCriticalSection。
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |