gpt4 book ai didi

multithreading - Delphi:如何锁定 "Socket.Write"并解锁?

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

我有几个客户端,它们写入一个套接字(而不是端口),当它们一起写入时,我收到垃圾,来自所有客户端的所有数据都被合并。

所有客户端都在线程中的同一个程序中。

我需要锁定 write()

ASocket.Connection.Socket.LOCK; // need to be thread safe
ASocket.Connection.Socket.Write(buf);
ASocket.Connection.Socket.UNLOCK; // need to be thread safe

我该怎么做?

谢谢。

Delphi 2010、Indy 10、Win7

最佳答案

您可以使用TCriticalSection(SyncObjs单元):将Write放在EnterLeave之间:

CriticalSection.Enter;
try
ASocket.Connection.Socket.Write(buf);
finally
CriticalSection.Leave;
end;

方法 AcquireRelease 执行相同的操作 ( doc )。重要提示:如果您在代码的多个点写入套接字,则必须使用同一个对象(我在上例中称为 CriticalSection 的对象)。

关于multithreading - Delphi:如何锁定 "Socket.Write"并解锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439608/

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