【坑】一個線程參數引起的血案

void function1(){this

  ThreadArg pArg;//他是個結構體指針線程

  pArg->s_1 = 1;指針

  pArg->s_2 = this;//關鍵就是這個,我是想把當前實例的指針讓線程去作一些操做。code

  int ret = pthread_create( &m_id, NULL, function2, (void *)pArg);io

}function

void * function2( void * p){thread

//code....co

//調用this的某些public結構體

}參數

結果悲劇了。。。。。時而報錯,時而不報錯。。。每次報錯還不同。原來就是pArg的聲明週期結束了,致使this指針有時可能被覆蓋有時可能沒有,因此一切都是不肯定的。因而把這個線程參數放在堆裏面了,就沒事了。。。之後不能再這樣馬虎了!

相關文章
相關標籤/搜索