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

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;
  ...

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...