Multithreading Delphi线程池队列

Multithreading Delphi线程池队列,multithreading,delphi,Multithreading,Delphi,您好,是否可以找到以下任务的示例。 我正在通过WebCocket进行连接,并收到消息。 收到消息后,我必须将其插入数据库,并尝试在队列线程池中执行。 目前我在做以下事情,但我认为这不是正确的方法 var MyStrings:Tstringlist; MyStrings:Tstringlist.create; //On Websocket message MyStrings.add(Message);

您好,是否可以找到以下任务的示例。 我正在通过WebCocket进行连接,并收到消息。 收到消息后,我必须将其插入数据库,并尝试在队列线程池中执行。 目前我在做以下事情,但我认为这不是正确的方法

           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”,例如。