Вы передаете свои данные через четвертый параметр.Это передает указатель на i
:
unsigned __stdcall thread(void *arg)
{
int *iptr = (int*)arg;
...
}
int i;
_beginthreadex(0, 0, thread, &i, 0, 0);
Обратите внимание, что подпись функции потока, которую я здесь использовал, отличается от используемой вами: я возвращаю unsigned
и использую соглашение о вызовах __stdcall
-это подпись, которую _beginthreadex ожидает.
В зависимости от того, что вы пытаетесь сделать, новые функции Concurrency Runtime в VC ++ могут быть проще в использовании, чем явное управлениеВаши собственные потоки.
Редактировать в ответ на редактирование вопроса:
Вы можете передать любой действительный указатель void, включая NULL.Если вы сделаете это, вы даже можете пропустить имя параметра, поскольку вы его не используете:
unsigned __stdcall thread(void*)
{
...
}
_beginthreadex(0, 0, thread, 0, 0, 0);