C++/Qt - QThread vs QRunnable












11














What are the differences between QThreads and QRunnable ?



When should I use QThread and when QRunnable ?










share|improve this question
























  • A very good talk about multithreading in Qt (they explain QThread, QRunnable, QThreadPool, cross-threads signal-slots, etc.) was given at Qt DevDays 2011. Videos can be found here: Part 1, Part 2.
    – leemes
    May 28 '13 at 12:24


















11














What are the differences between QThreads and QRunnable ?



When should I use QThread and when QRunnable ?










share|improve this question
























  • A very good talk about multithreading in Qt (they explain QThread, QRunnable, QThreadPool, cross-threads signal-slots, etc.) was given at Qt DevDays 2011. Videos can be found here: Part 1, Part 2.
    – leemes
    May 28 '13 at 12:24
















11












11








11


4





What are the differences between QThreads and QRunnable ?



When should I use QThread and when QRunnable ?










share|improve this question















What are the differences between QThreads and QRunnable ?



When should I use QThread and when QRunnable ?







c++ qt concurrency qthread






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 2 '17 at 13:28









sandwood

922720




922720










asked May 28 '13 at 12:15









CDTCDT

3,067114477




3,067114477












  • A very good talk about multithreading in Qt (they explain QThread, QRunnable, QThreadPool, cross-threads signal-slots, etc.) was given at Qt DevDays 2011. Videos can be found here: Part 1, Part 2.
    – leemes
    May 28 '13 at 12:24




















  • A very good talk about multithreading in Qt (they explain QThread, QRunnable, QThreadPool, cross-threads signal-slots, etc.) was given at Qt DevDays 2011. Videos can be found here: Part 1, Part 2.
    – leemes
    May 28 '13 at 12:24


















A very good talk about multithreading in Qt (they explain QThread, QRunnable, QThreadPool, cross-threads signal-slots, etc.) was given at Qt DevDays 2011. Videos can be found here: Part 1, Part 2.
– leemes
May 28 '13 at 12:24






A very good talk about multithreading in Qt (they explain QThread, QRunnable, QThreadPool, cross-threads signal-slots, etc.) was given at Qt DevDays 2011. Videos can be found here: Part 1, Part 2.
– leemes
May 28 '13 at 12:24














2 Answers
2






active

oldest

votes


















7














The QRunnable class and the QtConcurrent::run() function are well suited to situations where we want to perform some background processing in one or more
secondary threads without needing the full power and flexibility provided by
QThread.



from "Advanced Qt Programming: Creating Great Software with C++ and Qt 4" by Mark Summerfield






share|improve this answer

















  • 6




    This answer would be useful if it explained "full power and flexibility provided by QThread", because it suggests you should default to using QRunnable, and use QThread only when you need... What? Signals? An event loop? Etc.
    – Oliver
    Dec 2 '16 at 3:47





















0














QThread can run an event loop, QRunnable doesn't have one so don't use it for tasks designed to have an event loop. Also, not being a QObject, QRunnable has no built-in means of explicitly communicating something to other components; you have to code that by hand, using low-level threading primitives (like a mutex-guarded queue for collecting results, etc.). Using QThread you can use signals and slots which are thread safe.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f16791824%2fc-qt-qthread-vs-qrunnable%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    7














    The QRunnable class and the QtConcurrent::run() function are well suited to situations where we want to perform some background processing in one or more
    secondary threads without needing the full power and flexibility provided by
    QThread.



    from "Advanced Qt Programming: Creating Great Software with C++ and Qt 4" by Mark Summerfield






    share|improve this answer

















    • 6




      This answer would be useful if it explained "full power and flexibility provided by QThread", because it suggests you should default to using QRunnable, and use QThread only when you need... What? Signals? An event loop? Etc.
      – Oliver
      Dec 2 '16 at 3:47


















    7














    The QRunnable class and the QtConcurrent::run() function are well suited to situations where we want to perform some background processing in one or more
    secondary threads without needing the full power and flexibility provided by
    QThread.



    from "Advanced Qt Programming: Creating Great Software with C++ and Qt 4" by Mark Summerfield






    share|improve this answer

















    • 6




      This answer would be useful if it explained "full power and flexibility provided by QThread", because it suggests you should default to using QRunnable, and use QThread only when you need... What? Signals? An event loop? Etc.
      – Oliver
      Dec 2 '16 at 3:47
















    7












    7








    7






    The QRunnable class and the QtConcurrent::run() function are well suited to situations where we want to perform some background processing in one or more
    secondary threads without needing the full power and flexibility provided by
    QThread.



    from "Advanced Qt Programming: Creating Great Software with C++ and Qt 4" by Mark Summerfield






    share|improve this answer












    The QRunnable class and the QtConcurrent::run() function are well suited to situations where we want to perform some background processing in one or more
    secondary threads without needing the full power and flexibility provided by
    QThread.



    from "Advanced Qt Programming: Creating Great Software with C++ and Qt 4" by Mark Summerfield







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered May 28 '13 at 12:28









    Erik KajuErik Kaju

    2,77631225




    2,77631225








    • 6




      This answer would be useful if it explained "full power and flexibility provided by QThread", because it suggests you should default to using QRunnable, and use QThread only when you need... What? Signals? An event loop? Etc.
      – Oliver
      Dec 2 '16 at 3:47
















    • 6




      This answer would be useful if it explained "full power and flexibility provided by QThread", because it suggests you should default to using QRunnable, and use QThread only when you need... What? Signals? An event loop? Etc.
      – Oliver
      Dec 2 '16 at 3:47










    6




    6




    This answer would be useful if it explained "full power and flexibility provided by QThread", because it suggests you should default to using QRunnable, and use QThread only when you need... What? Signals? An event loop? Etc.
    – Oliver
    Dec 2 '16 at 3:47






    This answer would be useful if it explained "full power and flexibility provided by QThread", because it suggests you should default to using QRunnable, and use QThread only when you need... What? Signals? An event loop? Etc.
    – Oliver
    Dec 2 '16 at 3:47















    0














    QThread can run an event loop, QRunnable doesn't have one so don't use it for tasks designed to have an event loop. Also, not being a QObject, QRunnable has no built-in means of explicitly communicating something to other components; you have to code that by hand, using low-level threading primitives (like a mutex-guarded queue for collecting results, etc.). Using QThread you can use signals and slots which are thread safe.






    share|improve this answer




























      0














      QThread can run an event loop, QRunnable doesn't have one so don't use it for tasks designed to have an event loop. Also, not being a QObject, QRunnable has no built-in means of explicitly communicating something to other components; you have to code that by hand, using low-level threading primitives (like a mutex-guarded queue for collecting results, etc.). Using QThread you can use signals and slots which are thread safe.






      share|improve this answer


























        0












        0








        0






        QThread can run an event loop, QRunnable doesn't have one so don't use it for tasks designed to have an event loop. Also, not being a QObject, QRunnable has no built-in means of explicitly communicating something to other components; you have to code that by hand, using low-level threading primitives (like a mutex-guarded queue for collecting results, etc.). Using QThread you can use signals and slots which are thread safe.






        share|improve this answer














        QThread can run an event loop, QRunnable doesn't have one so don't use it for tasks designed to have an event loop. Also, not being a QObject, QRunnable has no built-in means of explicitly communicating something to other components; you have to code that by hand, using low-level threading primitives (like a mutex-guarded queue for collecting results, etc.). Using QThread you can use signals and slots which are thread safe.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 19 '18 at 20:57

























        answered Nov 19 '18 at 18:21









        Alexandra AnghelescuAlexandra Anghelescu

        6114




        6114






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f16791824%2fc-qt-qthread-vs-qrunnable%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

            Npm cannot find a required file even through it is in the searched directory