【发布时间】:2020-05-01 13:06:30
【问题描述】:
我需要处理从 tcp 链路接收到的数据。数据是 203 字节长度的十六进制字符串帧。
我将它们保存在 tstringlist 的末尾
MyList.Add( input );
从第二个线程读取第一个字符串并处理它并从列表中删除 firs
procedure TMyThread.Execute;
var str : string;
begin
while not Terminated do
begin
FTermEvent.WaitFor(100);
if not Terminated then
begin
str := MyList[0];
MyList.Delete(0);
//some process
end;
end
end;
问题是,这个线程安全吗?!
【问题讨论】:
-
抛开线程方面的考虑,使用
TQueue<string>而不是TStringList会更有效。 -
小吹牛,不要用字符串存储二进制数据...
-
请阅读这篇优秀的primer on threading。你所拥有的是一个典型的生产者/消费者案例......
-
为什么,为什么要将二进制数据存储为十六进制文本?
标签: delphi