Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to stop QFuture thread
Qt 6.11 is out! See what's new in the release blog

How to stop QFuture thread

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 2 Posters 5.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Bonnie

    QFurture cannot stop untill the fuction is completely executed...

    Be aware that not all running asynchronous computations can be canceled. For example, the future returned by QtConcurrent::run() cannot be canceled;

    QFuture::cancel() does not stop the thread immediately, it just cancels all the unstarted jobs.

    Ketan__Patel__0011K Offline
    Ketan__Patel__0011K Offline
    Ketan__Patel__0011
    wrote on last edited by
    #3

    @Bonnie
    thanks for the replay

    but any how i want to stop it

    is it have any other way to stop any process when it is running ?

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    please help me to solve the problem
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    B 1 Reply Last reply
    0
    • Ketan__Patel__0011K Ketan__Patel__0011

      @Bonnie
      thanks for the replay

      but any how i want to stop it

      is it have any other way to stop any process when it is running ?

      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      please help me to solve the problem
      ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

      B Offline
      B Offline
      Bonnie
      wrote on last edited by Bonnie
      #4

      @Ketan__Patel__0011

      You can considering doing the normal way to stop a loop in another thread: adding a member variable to control the loop.

      bool b_exitloop = false;
      
      for(int i=1 ; i <= 10 && !b_exitloop;i++)                        
      {
          QThread::sleep(1);
          ui->label->setText(QString::number(i));
      }  
      
      if(this->future_1.isRunning())
      {
        this->b_exitloop  = true;
        this->future_1.waitForFinished();
        this->b_exitloop = false;
      }
      

      But this cannot stop the sleep.
      Also be careful about synchronizing threads if you need to.

      Ketan__Patel__0011K 1 Reply Last reply
      1
      • B Bonnie

        @Ketan__Patel__0011

        You can considering doing the normal way to stop a loop in another thread: adding a member variable to control the loop.

        bool b_exitloop = false;
        
        for(int i=1 ; i <= 10 && !b_exitloop;i++)                        
        {
            QThread::sleep(1);
            ui->label->setText(QString::number(i));
        }  
        
        if(this->future_1.isRunning())
        {
          this->b_exitloop  = true;
          this->future_1.waitForFinished();
          this->b_exitloop = false;
        }
        

        But this cannot stop the sleep.
        Also be careful about synchronizing threads if you need to.

        Ketan__Patel__0011K Offline
        Ketan__Patel__0011K Offline
        Ketan__Patel__0011
        wrote on last edited by
        #5

        @Bonnie

        Thanks for reply

        i also try this way and i get good result

        but this is not a proper and good way for any large application and sensitive application

        i need a proper way to solve this problem

        i am also doing research for this

        B 1 Reply Last reply
        0
        • Ketan__Patel__0011K Ketan__Patel__0011

          @Bonnie

          Thanks for reply

          i also try this way and i get good result

          but this is not a proper and good way for any large application and sensitive application

          i need a proper way to solve this problem

          i am also doing research for this

          B Offline
          B Offline
          Bonnie
          wrote on last edited by Bonnie
          #6

          @Ketan__Patel__0011 Well, another way is to not using loop in you function and not using run. Try using those map functions in QtConcurrent.
          Then you can cancel it.

          Ketan__Patel__0011K 1 Reply Last reply
          0
          • B Bonnie

            @Ketan__Patel__0011 Well, another way is to not using loop in you function and not using run. Try using those map functions in QtConcurrent.
            Then you can cancel it.

            Ketan__Patel__0011K Offline
            Ketan__Patel__0011K Offline
            Ketan__Patel__0011
            wrote on last edited by
            #7

            @Bonnie
            thanks for reply

            without looping statements is not reliable to manage lot's of process
            sorry but i can't remove looping statements

            1 Reply Last reply
            0
            • B Offline
              B Offline
              Bonnie
              wrote on last edited by Bonnie
              #8

              Then I think QtConcurrent is not the right solution for you when you need to exit a loop.
              The only way to exit a loop is still controlling by a variable.

              Ketan__Patel__0011K 1 Reply Last reply
              0
              • B Bonnie

                Then I think QtConcurrent is not the right solution for you when you need to exit a loop.
                The only way to exit a loop is still controlling by a variable.

                Ketan__Patel__0011K Offline
                Ketan__Patel__0011K Offline
                Ketan__Patel__0011
                wrote on last edited by
                #9

                @Bonnie

                Let's suppose if i use variable for controlling then when i false the any variable or boolean flag that time
                is memory still consuming or not ?

                1 Reply Last reply
                0
                • B Offline
                  B Offline
                  Bonnie
                  wrote on last edited by
                  #10

                  What memory do you mean?

                  Ketan__Patel__0011K 1 Reply Last reply
                  0
                  • B Bonnie

                    What memory do you mean?

                    Ketan__Patel__0011K Offline
                    Ketan__Patel__0011K Offline
                    Ketan__Patel__0011
                    wrote on last edited by Ketan__Patel__0011
                    #11

                    @Bonnie

                    if i stop the any function process using any boolean flag

                    that time is memory(RAM) are still consuming or not ?

                    and CPU are still used ?

                    1 Reply Last reply
                    0
                    • B Offline
                      B Offline
                      Bonnie
                      wrote on last edited by
                      #12

                      If you exit the loop, the code in the loop will stop being executed.
                      I don't understand what memeory / CPU are you talking about.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved