У меня многопоточное приложение.Однако я заметил, что я использую OpenGL, и это не должно работать без семафоров.И это сделал.Я добавил семафоры позже, потому что они должны использоваться.
Не так уж велик тот факт, что у меня теперь есть многопоточное приложение, которое на самом деле не использует несколько потоков или ядер на процессоре.
Кажется, что баланс моей нагрузки всегда идет к одному ядру (из 4) с разницей не менее 40%.
Нужно ли переключать триггер в файле проекта Qt илиЯ что-то упускаю из виду?Вполне возможно, что такое поведение ожидается, но было бы неплохо прояснить ситуацию.
Моя платформа - Ubuntu 11.10.
class DrawChunkThread : public QThread
{
public:
DrawChunkThread(World *world, int x, int z);
void run();
World *world;
int x;
int z;
static QSemaphore *sem;
private:
};
QSemaphore *DrawChunkThread::sem = new QSemaphore(1);
DrawChunkThread::DrawChunkThread(World *world, int x, int z) {
this->world = world;
this->x = x;
this->z = z;
}
void DrawChunkThread::run()
{
world->drawChunk(x, z);
if (world->isInside) {
world->drawInsideChunk(x, z);
}
}