RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> Господа, просветите пожалуйста. > Есть такой кусок кода(см. ниже). Цель: запустить две нитки с передачей им двух разных параметров. Ожидаемый результат на экране: > Param=1234 > Param=5678 > Так и получается, если в main() оставить DosSleep(). Если этот вызов убрать, то на экране: > Param=5678 > Param=5678 > > Просветите, где грабли. > Вырезка из программы: > > void main() > { > ULONG ParamList[5]; > PULONG Params; > TID* ServThreadID; > ... > *(Params + 0)= 1234; > *(Params + 1)= 5678; > > for (int i=0; i< 2; i++) > { > ParamList[0] = *(Params + i); > rc = DosCreateThread((ServThreadID+i), > ServThreadFunc, > (ULONG)ParamList, > 0L, > 8192L); > assert(NO_ERROR==rc); > DosSleep(1000); > }/*end of for (int i=0; i< 2; i++)*/ > ... > } > --------------------- > > VOID APIENTRY ServThreadFunc(ULONG ParamL) > { > ULONG ulTemp; > ... > ulTemp = *((PULONG)ParamL + 0); > printf("Param= %lx\n", ulTemp); > fflush(stdout); > ... > } >
__, _, __, _,_ _, _
|_ / \ |_) | | |\/|
| \ / | \ | | | |
~ ~ ~ ~ `~' ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.