Multithreading Delphi线程池队列
您好,是否可以找到以下任务的示例。 我正在通过WebCocket进行连接,并收到消息。 收到消息后,我必须将其插入数据库,并尝试在队列线程池中执行。 目前我在做以下事情,但我认为这不是正确的方法Multithreading Delphi线程池队列,multithreading,delphi,Multithreading,Delphi,您好,是否可以找到以下任务的示例。 我正在通过WebCocket进行连接,并收到消息。 收到消息后,我必须将其插入数据库,并尝试在队列线程池中执行。 目前我在做以下事情,但我认为这不是正确的方法 var MyStrings:Tstringlist; MyStrings:Tstringlist.create; //On Websocket message MyStrings.add(Message);
var MyStrings:Tstringlist;
MyStrings:Tstringlist.create;
//On Websocket message
MyStrings.add(Message);
//and in a Thread that always is Running i do
procedure TMythread.Execute;
begin
while true
begin
if MyStrings.count>0 Then
begin
/////////////////////////////////////
//database jobs
//with the string MyStrings.strings(0)
/////////////////////////////////////
MyStrings.delete(0);
end;
end;
end;
但是这样我一个接一个地处理作业,怎么可能同时有10个线程来处理这些任务呢
在10个线程完成后,如果Mystrings中存在10个以上的字符串并将其处理为10个单独的线程?首先,您必须保存数据交换。如果您有一个将在不同线程上更改(添加、删除条目)的列表,则必须锁定资源 对于线程队列/池,请查看以下链接:
对于资源锁定,您可以使用“TCriticalSection”,例如。