Delphi线程池队列

时间:2020-03-13 07:56:19

标签: multithreading delphi

嗨,有可能找到关注任务的例子。 我正在连接Webscocket并收到消息。 收到消息后,我必须将其插入数据库,然后尝试在队列线程池中进行操作。 目前,我正在执行以下操作,但是我不认为这是最核心的方法。

           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个单独的线程?

1 个答案:

答案 0 :(得分:1)

首先,您必须保存数据交换。如果您有一个要在不同线程上更改(添加,删除条目)的列表,则必须锁定资源。

对于线程队列/池,请查看以下链接:

http://docwiki.embarcadero.com/Libraries/Rio/en/System.Threading.TTask http://docwiki.embarcadero.com/Libraries/Rio/en/System.Classes.TThread.Queue

相关问题