Показать сообщение отдельно

  #2  
Старый 25.09.2009, 17:40
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
Провел на форуме:
193434

Репутация: 79
Отправить сообщение для Hiro Protagonist с помощью ICQ
По умолчанию

2mailbrush

а с чего ты взял, что потоки создадутся, запустятся и дойдут до sprintf сразу после _beginthread, там же ещё хренова туча crt мутотени выполнять? Есественно, что цикл выполняется быстрее, чем uid используется в потоке. В данном случае нужно синхронизировать потоки или передавать индивидуальные параметры по типу:

int *q = malloc(5*4);

for(i=0;i<=4;i++)
{
uid++;
q[i] = uid;
_beginthread(tfunc, 0, &q[i]);
}

free(q);

PS НЕ ИСПОЛЬЗУЙ _beginthread БОЛЬШЕ НИКОГДА!!! ОНА УСТАРЕЛА!!! ИСПОЛЬЗУЙ _beginthreadex.

Последний раз редактировалось Hiro Protagonist; 25.09.2009 в 17:55..
 
Ответить с цитированием