- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要两个过程可以互相调用,或者从正在运行的任何线程调用,但一次只能运行一个。我怎样才能做到这一点?这能正常工作吗?
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/
我有一个用 Delphi 10 Seattle Win32 编写的服务应用程序,它具有在线程中定期更新的内存数据。 由于数据是一个复杂的结构并且以 block 的形式接收,更新代码写入一个临时列表,当
我正在编写一个多线程聊天服务器应用程序。因此临界区是非常必要的。我刚刚为线程 TreeView 制作了一个包装类。它在客户端中完美运行,但服务器会引发 AV。 有两种形式,FormServer(除了
我想要两个过程可以互相调用,或者从正在运行的任何线程调用,但一次只能运行一个。我怎样才能做到这一点?这能正常工作吗? var cs: TCriticalSection; procedure a;
在Windows平台上,TCriticalSection是通过调用Windows API EnterCriticalSection/LeaveCriticalSection来实现的。 Microsof
我正在更新 Delphi (Delphi 2009) 代码,它专门使用 TCriticalSection.Acquire/Release 对,而不是 Enter/Release 或 Leave 对。我
我是一名优秀的程序员,十分优秀!