migrating from Inherited QThread to Worker model

后端 未结 3 375
失恋的感觉
失恋的感觉 2021-01-23 00:36

So through a lot of help in my previous questions (Interrupting QThread sleep and PySide passing signals from QThread to a slot in another QThread) I decided to attempt to chang

3条回答
  •  渐次进展
    2021-01-23 00:42

    There 3 possible ways of distributing the computation/other load with Qt:

    1. Explicitly putting the load to concrete QThread instance. That is thread-based concurrency.
    2. Implicitly putting the load to pooled QThread instance. That is closer to task-based concurrency yet 'manually' managed with your own logic. QThreadPool class is used for maintaining the pool of threads.
    3. Starting the task in own threading context we never explicitly manage. That is task-based concurrency and QtConcurrent namespace used. My guess is that task-based concurrency and "worker model" is the same thing (observed your changes). Mind that QtConcurrent does offer parallelization for tasks and uses exceptions (which may affect the way you write the code) unlike the rest of Qt.

    Given you use PyQt you can also take an advantage of the feature designated for the pattern you want to implement with QtConcurrent for PyQt.

    P.S. I see use thread.sleep( interval ) and that is not a good practice and one more indication that the proper technique should be used for implementing 'Worker model'.

提交回复
热议问题