Сорри за кривоватую формулировку названия темы, счас попробую объяснить суть вопроса. У меня создается множество потоков обработки в цикле, при создании потока мне надо передать в функцию потока числовой параметр - номер. Счас выглядит это так:
Код | for(int Seek = 0; Seek <= MaxCount; Seek++) CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyFunct, &Seek, 0, NULL);
|
В функции MyFunct я этот параметр первым делом сохраняю:
Код | void MyFunct(int* Seek) { int Line = *Seek;
|
И вроде все работает как ожидалось. Но вот вопрос: на создание потока нужно время системе, а за это время Seek в родительском потоке вполне может измениться, так как пойдет следующая итерация цикла. Собсно, посоветуйте, как грамотно решается такая задача? Создавать массив с элементами для каждого значения i и передавать указатель на элемент массива? как-то глупо... в общем собсно вопрос, ситуация я так понимаю достаточно типичная, как грамотно передать при создании потока такую переменную? |