Re: Многопоточность и CreateThread
От: Аноним  
Дата: 11.11.08 11:01
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем привет.


А>Народ вот с такой гадостью столкнулся. Смысл такой:


А>
А>DWORD ThreadFun(void * arguments)
А>{
А>  cObject * s = (cObject *) arguments

  s->>Method();

А>  while(SomeCondition) {
А>    ...
А>  }

А>  ExitThread(0);
А>  return 0;
А>}

А>int main()
А>{
А>  ...
А>  cObject object;
А>  cObject * o = & object;
А>  CreateThread(..., (LPTHREAD_START_ROUTINE) ThreadFun, s, ...);
А>  ...
А>}
А>


А>Но весь ужас ситуации в том, что как только отрабатывает первая строчка внутри

А>
s->>Method();
А>


А>Вызывается деструктор cObject и вылетает error, что std::bad_alloc in memory ... .

А>Что тут не так и как это убить ?
Так поток выполняется одновременно с потоком в котором main работает. Если в том потоке удалить s до того как ThreadFun завершит исполнение, то — s удалится, было бы странно еслиб не удалялся Соответственно надо пересматривать логику удаления s.
ExitThread кстати не нужен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.