Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > В CreateThread передается (void*) param


Автор: Ibragim 1.2.2008, 13:15
Сорри за кривоватую формулировку названия темы, счас попробую объяснить суть вопроса.
У меня создается множество потоков обработки в цикле, при создании потока мне надо передать в функцию потока числовой параметр - номер. Счас выглядит это так:

Код

    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 и передавать указатель на элемент массива? как-то глупо... в общем собсно вопрос, ситуация я так понимаю достаточно типичная, как грамотно передать при создании потока такую переменную?

Автор: MAKCim 1.2.2008, 14:04
Код

for(int Seek = 0; Seek <= MaxCount; Seek++)
        CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)MyFunct, (int*)Seek, 0, NULL);

Код

void CheckSocks5(int* Seek)
{
    int Line = (int)Seek;

Автор: Ibragim 1.2.2008, 14:21
<deleted>, да, спасибо, похоже то что надо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)