繁体   English   中英

Delphi 2007,Indy-在TidTCPServer线程中声明的变量在上下文中是否安全?

[英]Delphi 2007, Indy - Is a variable declared in a TidTCPServer thread safe in contexts?

如果我有一个TidTCPServer实例,并且声明了一个TFormatSettings并将其填充在Create例程中,则可以安全地在线程的Execute方法中引用此变量(例如,调用Format ('%1.6f', [SomeReal], AFormatSettings]) ,什么时候可以执行多个上下文?

如果没有,我该如何进行线程安全引用?

只要仅当没有线程正在访问AFormatSettings时(例如在激活服务器之前对其进行初始化)并且线程仅从中读取时,才可以修改AFormatSettings Format()不会修改传递给它的TFormatSettings

如果您对线程安全性有疑问,可以创建以下函数并将其代替Format。

ThdSafeFormat(const aFormat: string; const aArgs: array of const): string;
var
  FormatSettings: TFormatSettings;
begin
  GetLocaleFormatSettings(LOCALE_USER_DEFAULT, FormatSettings);
  Result := Format(aFormat, aArgs, FormatSettings);
end;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM