Я пытаюсь установить приоритет потоков, используя потоки poco и API пула потоков. но когда я пытаюсь запустить программу и пытаюсь увидеть установленный приоритет с помощью htop, он всегда показывает 20. Кроме того, в терминале мин. и МАКС. приоритет печатаются как 0, так как я добавил коуты для печати того же самого. Я запускаю программу на основе Ubuntu 16 Linux. Будем благодарны за любую помощь или предложение.
По сути, я хочу увеличить приоритет нескольких потоков. Я использовал poco TaskManager, но он не предоставляет механизм для установки приоритета. поэтому я пытаюсь использовать потоки Poco, чтобы сделать то же самое, но это также не помогает.
#include <Poco/Runnable.h>
#include <Poco/Thread.h>
#include <Poco/ThreadPool.h>
#include <Poco/ThreadTarget.h>
#include <Poco/RunnableAdapter.h>
#include <string>
#include <iostream>
class Foo : public Poco::Runnable
{
public:
virtual void run()
{
std::cout << " run() start" << std::endl;
Poco::Thread *t = Poco::Thread::current();
int pmax = t->getMaxOSPriority();
int pmin = t->getMinOSPriority();
cout << "T1 priority " << t->getOSPriority() << " min " << pmin << " max " << pmax << endl;
t->setOSPriority(pmax);
cout << "T1 priority " << t->getOSPriority() << endl;
cout << "T1 priority " << t->getPriority() << endl;
Poco::Thread::sleep(200);
std::cout << " run() end" << std::endl;
}
};
int main()
{
// setting priority Using threadpool
Poco::ThreadPool::defaultPool().addCapacity(16);
Foo foo;
Poco::ThreadPool::defaultPool().startWithPriority(Poco::Thread::Priority::PRIO_LOW, foo);
Poco::ThreadPool::defaultPool().joinAll();
// setting priority Using thread
Poco::Thread thread;
thread.start(foo);
thread.join();
return 0;
}