RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Вопрос по Си (нитки)


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Andy A. Porro
To : Igor Saveliev
Subj : Вопрос по Си (нитки)

Sorry, типичная ошибка. Надо для каждого треда формировать свой блок параметров, он ведь передается по адресу в тред. Соответственно, если это динамическая память, то ее можно освобождать только после уничтожения треда.

ULONG Par1 [5];
ULONG Par2 [5];

> for (int i=0; i< 2; i++)
> {
if ( i == 0 )
{
Par[0] = *(Params + i);
rc = DosCreateThread((ServThreadID+i),
ServThreadFunc,
(ULONG)Par2,
0L,
8192L);
}
else
{
Par2[0] = *(Params + i);
rc = DosCreateThread((ServThreadID+i),
ServThreadFunc,
(ULONG)Par2,
0L,
8192L);
}
}
> assert(NO_ERROR==rc);
> DosSleep(1000);
> }/*end of for (int i=0; i< 2; i++)*/
> ...
> }
Как сделать умнее додумаешь сам я надеюсь.


Mon 03 Dec 2001 18:39 Mozilla/4.61 [en] (OS/2; I)




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.