- 論壇徽章:
- 0
|
有個(gè)程序,linux下面,多線程,輸入為一個(gè) char*, 輸出一堆char*.
目前為了調(diào)試,只分了兩個(gè)線程:一個(gè)負(fù)責(zé)往一個(gè)全局變量寫值,一個(gè)讀這個(gè)值,做運(yùn)算,然后把結(jié)果寫回來(lái).
整個(gè)程序,如果只計(jì)算一個(gè)輸入,沒(méi)有問(wèn)題,即時(shí)6個(gè)線程同時(shí)算一個(gè)值也沒(méi)有問(wèn)題.
但是,多個(gè)線程就出問(wèn)題了.
跟蹤發(fā)現(xiàn),當(dāng)計(jì)算到第58個(gè)節(jié)點(diǎn)的時(shí)候,有這么一個(gè)操作:
pthread_mutext_lock( my_lock);
//xxxxx
pthread_mutext_unlock( my_lock); //
前面的都沒(méi)有問(wèn)題,一旦執(zhí)行了后面的unlock操作,另外一塊內(nèi)存區(qū)域的值就被改寫.(于是程序出錯(cuò))
請(qǐng)教一下,這錯(cuò)誤,該如何去定位找到bug.
|
|