gpt4 book ai didi

delphi - 我可以嵌套关键部分吗? TCriticalSection 可以嵌套吗?

转载 作者:行者123 更新时间:2023-12-03 15:47:19 24 4
gpt4 key购买 nike

我想要两个过程可以互相调用,或者从正在运行的任何线程调用,但一次只能运行一个。我怎样才能做到这一点?这能正常工作吗?

var
cs: TCriticalSection;

procedure a;
begin
cs.Acquire;
try
// Execute single threaded here.
finally
cs.Release;
end;
end;

procedure b;
begin
cs.Acquire;
try
// Execute single threaded here. Maybe with calls to procedure a.
finally
cs.Release;
end;
end;

最佳答案

是的,这会起作用。在同一线程中,过程 A 可以调用过程 B,反之亦然,当线程 A 使用过程 A 或过程 B 时,线程 B 想要使用这些过程时必须等待。

请参阅有关关键部分的 MSDN 文档:http://msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx

关键部分可以嵌套,但每次调用 Acquire 时都必须调用 Release。因为您在 try ..finally 子句中进行了 Release 调用,所以您可以确保这种情况发生,因此您的代码没有问题。

关于delphi - 我可以嵌套关键部分吗? TCriticalSection 可以嵌套吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626715/

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