Delphi中TCriticalSection能否实现嵌套使用,形成关键部分嵌套的关键嵌套结构?

2026-04-10 21:172阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计265个文字,预计阅读时间需要2分钟。

Delphi中TCriticalSection能否实现嵌套使用,形成关键部分嵌套的关键嵌套结构?

希望有两个程序可以相互调用,或者可以从运行的任何线程调用,但一次只能运行一个。我该如何实现这一点?这样做正常吗?

var cs: TCriticalSection;procedure a;begin cs.Acquire; try // 执行单线程操作 finally cs.Release; end;end;

我希望有两个程序可以相互调用,或者从运行的任何线程调用,但一次只运行一个.我怎样才能做到这一点?这会正常吗?

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文档:msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx

Delphi中TCriticalSection能否实现嵌套使用,形成关键部分嵌套的关键嵌套结构?

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

本文共计265个文字,预计阅读时间需要2分钟。

Delphi中TCriticalSection能否实现嵌套使用,形成关键部分嵌套的关键嵌套结构?

希望有两个程序可以相互调用,或者可以从运行的任何线程调用,但一次只能运行一个。我该如何实现这一点?这样做正常吗?

var cs: TCriticalSection;procedure a;begin cs.Acquire; try // 执行单线程操作 finally cs.Release; end;end;

我希望有两个程序可以相互调用,或者从运行的任何线程调用,但一次只运行一个.我怎样才能做到这一点?这会正常吗?

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文档:msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx

Delphi中TCriticalSection能否实现嵌套使用,形成关键部分嵌套的关键嵌套结构?

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