gpt4 book ai didi

multithreading - 在多个服务之间共享日志文件(每个服务具有多个线程),如何?

转载 作者:行者123 更新时间:2023-12-03 14:44:29 28 4
gpt4 key购买 nike

我的一个项目需要解决这个问题。我需要为 3 个不同的服务创建一个日志文件(不要问为什么,我的老板是这样要求的)。每个服务可以有多个线程尝试将信息记录到文件中,所以我的问题是,执行此操作的最佳方法是什么?

我应该使用全局互斥锁吗?像这样的事情:

procedure LogToFile(fn, str: string);
var
F: TextFile;
begin
logMutex.Acquire;
try
{$I+}
try
AssignFile(F, fn);
if FileExists(fn) then
Append(F)
else
Rewrite(F);
Writeln(F, DateTimeToStr(Now) + ': ' + str);
CloseFile(F);
except
end;
{$I-}
finally
logMutex.Release;
end;
end;

initialization
logMutex := SyncObjs.TMutex.Create(nil, False,'some_global_mutex');

finalization
logMutex.Free;

还有更好的想法吗?

编辑:我是否应该构建另一项服务(记录器服务),该服务等待需要从其他服务记录的消息,然后只有一个服务必须处理日志文件?如果这是一个好的解决方案,那么服务之间通信的最佳方式是什么?我可以使用印地...

最佳答案

使用命名互斥体的解决方案将起作用,并且肯定是最简单的方法。

关于multithreading - 在多个服务之间共享日志文件(每个服务具有多个线程),如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404600/

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