Суть такая, есть некоторая симуляция модели, в которой создаются потоки для моделирования полета объекта
void Simulator::Start(ModuleRls &RLS)
{
for (uint i = 0; i < flyObjVector.size(); i++)
{
StreamFly *obj = new StreamFly(flyObjVector, RLS, i + 1);
obj->start();
}
}
Сам поток:
void StreamFly::run()
{
for (int i = 0; i < 50; i++)
{
qDebug() << id << "[" << QThread::currentThreadId() << "]" << RLS->getX();
}
}
Здесь я беру координату RLS для проверки работы, она равна 50(допустим)
В логе я вижу такую картину:
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
1 [ 0x1a88 ] 50
6 [ 0x1cf8 ] 2675932
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
6 [ 0x1cf8 ] 49351064
2 [ 0x1c78 ] 50
6 [ 0x1cf8 ] 6900
2 [ 0x1c78 ] 6900
6 [ 0x1cf8 ] 6900
2 [ 0x1c78 ] 6900
2 [ 0x1c78 ] 6900
6 [ 0x1cf8 ] 6900
2 [ 0x1c78 ] 6900
6 [ 0x1cf8 ] 6900
7 [ 0x1d00 ] 6900
4 [ 0x1de8 ] 6900
6 [ 0x1cf8 ] 6900
4 [ 0x1de8 ] 6900
6 [ 0x1cf8 ] 6900
2 [ 0x1c78 ] 6900
4 [ 0x1de8 ] 6900
6 [ 0x1cf8 ] 6900
7 [ 0x1d00 ] 6900
4 [ 0x1de8 ] 6900
8 [ 0x1d0c ] 6900
6 [ 0x1cf8 ] 6900
Какие-то потоки получают правильно параметр, но иногда даже в одном потоке может шалить координата.
Допустим поток №1 и в нем половина правильно выводится и половина не правильно.
Не понимаю в чем проблема. С потоками на QT начал работать недавно, не судите строго :)
И еще один вопрос, почему-то после окончания симуляции, поджирает память на 1-2 мб, смотря сколько объектов запущено, допустим 1800. Да, по коду звучит бредово, я генерирую 1800 потоков... Но суть не в этом. Почему после каждого запуска, прибавляется эти 1-2мб, вектор объектов передается везде по ссылке.