Qt: wykorzystanie kilku rdzeni = kilka wątków?

0

Dzień dobry,
mam pytanie o wykorzystanie w aplikacji kilku rdzeni, czy wystarczy przenieść jakąś operację do osobnego wątku, aby system sam zdecydował czy przerzucić ją na osobny rdzeń, czy trzeba również zadbać o coś jeszcze?
Dodatkowo w dokumentacji od QThread http://doc.qt.io/qt-5/qthread.html jest zapis:
The effect of the priority parameter is dependent on the operating system's scheduling policy. In particular, the priority will be ignored on systems that do not support thread priorities (such as on Linux, see http://linux.die.net/man/2/sched_setscheduler for more details).

Czy można to jakoś ominąć, tak aby różne wątki na systemie linux miały różne priorytety?

Z góry dziękuję za odpowiedź: )

0

Moim zdaniem, wystarczy przeniesienie do innego wątku. Kiedyś właśnie w QT tworzyłem aplikacje wielowątkowe z wykorzystaniem QThread i thread z C++11 i w obu przypadkach aplikacja wykorzystywała dwa rdzenie, obserwowałem to w menedżerze zadań Windowsa.

Generalnie, żeby aplikacja wykorzystała 2 rdzenie, musi mieć 2 wątki wykonujące algorytm, tzn., że algorytm tak przemyślany, żeby były czynności możliwe do wykonania równolegle i w miarę możliwości, żeby takie czynności trwały jak najdłużej (bez częstej synchronizacji i oczekiwania na zakończenie czynności przez pozostałe wątki).

0

a ja polecam używanie QtConcurrent::run oraz QFuture:
http://doc.qt.io/qt-5/qtconcurrentrun.html

0

W C++11 są dostępne standardowe sposoby na wielowątkowość:
http://www.cplusplus.com/reference/multithreading/

Poza tym, pod Linuxem zawsze można pobawić się na niskim poziomie -- fork i spółka. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1