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

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


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


А>
А>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 ... .

А>Что тут не так и как это убить ?

выполнение функции после
А> CreateThread(..., (LPTHREAD_START_ROUTINE) ThreadFun, s, ...);

продолжается и объект object уничтожается по выходе из функции main, либо создай его ручками через new, либо копируй объект и передавай в поток копию, а еще лучше применить нормальный механизм межпоточного взаимодействия, в зависимости от контекста задачи
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.