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
Forum Updated to NodeBB v4.3 + New Features

How to stop QFuture thread

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 2 Posters 3.0k 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 Offline
    B Offline
    Bonnie
    wrote on last edited by Bonnie
    #2

    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 1 Reply Last reply
    1
    • 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