gpt4 book ai didi

android - 线程能否安全调用 TCriticalSection.Acquire 多次?

转载 作者:可可西里 更新时间:2023-11-01 04:41:44 31 4
gpt4 key购买 nike

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

到目前为止一切顺利。

但是在 Delphi 支持的其他平台(例如 OSX、iOS 和 Android)下的行为如何?

其他平台似乎使用了 TMonitor。所以这个问题可以针对 TMonitor 重写。

最佳答案

TCriticalSection在除Windows以外的其他平台下的实现简单的使用了TMonitor。所以你的问题的答案归结为 TMonitor.Enter 的行为。至少文档指出 TMonitor.Enter 是可重入的。

这部分documentation将意味着您的回答是"is":

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 多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21701531/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com