android– 一个线程可以安全地多次调用TCriticalSection.Acquire吗?

android– 一个线程可以安全地多次调用TCriticalSection.Acquire吗?,第1张

概述在Windows平台上,通过调用Windows API EnterCriticalSection / LeaveCriticalSection来实现TCriticalSection. Microsoft文档明确指出,在线程拥有关键部分的所有权后,它可以对EnterCriticalSection进行额外调用.到现在为止还挺好.但是Delphi支持的其他平台下的 @H_419_0@

在Windows平台上,通过调用windows API EnterCriticalSection / LeaveCriticalSection来实现TCriticalSection. Microsoft文档明确指出,在线程拥有关键部分的所有权后,它可以对EnterCriticalSection进行额外调用.

到现在为止还挺好.

但是Delphi支持的其他平台下的行为如OSX,iOS和Android呢?

其他平台似乎使用TMonitor.所以这个问题可以改写为TMonitor.

最佳答案在除windows之外的其他平台上实施TCriticalSection只使用TMonitor.因此,您的问题的答案减少了TMonitor.Enter的行为.至少文档说明TMonitor.Enter是可重入的.

documentation的这一部分对你的答案意味着“是”:

Prohibits the access of all other threads but the calling one to the specifIEd object.

TMonitor的相关代码部分位于TMonitor.TryEnter:

function TMonitor.TryEnter: Boolean;begin  if FOwningThread = GetCurrentThreadID then  // check for recursion  begin    ...    Result := True;  ...
总结

以上是内存溢出为你收集整理的android – 一个线程可以安全地多次调用TCriticalSection.Acquire吗?全部内容,希望文章能够帮你解决android – 一个线程可以安全地多次调用TCriticalSection.Acquire吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1140416.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存