int main(int argc, char** argv) {
int result=0,Oo=0,i=0,NumbElem=-1;
char key;
pthread_t *thr;
thr=new pthread_t[ListLong];
spis=new List;
for(i=ListLong;i>=0;i--){
NumbElem=spis->addNewElem(1);
result=pthread_create(thr+i, NULL,thread_func, &NumbElem);
if(result!=0){
printf("Error in start thread!\n");
}
}
mygetch();
spis->ShowList();
mygetch();
spis->~List();
cout<<"LOL";
return (EXIT_SUCCESS);
}
void *thread_func(void * arg){
int i=0,ololo=*(int*)arg;
element *ThrElem,p;
cout<<"Thread num "<<ololo<<"\t";
sleep(1);
ThrElem=spis->GetElemPointer(ololo);
cout<<"ThrElem is num="<<ThrElem->Num<<" next="<<ThrElem->next<<endl;
while(ThrElem->next){
ThrElem->next=NULL;
}
}
sigmentation fail при работе с pthread
Код:
В произвольные моменты времени,если присутствует строчка "ThrElem->next=NULL;" и условие "ThrElem->next" вылетает "sigmentation fail" тогда как "ThrElem->data=666;" отрабатывает правильно.Если не пытаться перепресвоить указатель то все кррректно.