好,這裏是一段代碼,我發現很奇怪:的整數遞增
printf("di consumerthread : mulai isi data, itmsg = %d\n",itmsg);
msgq->data[itmsg]=rec_data;
printf("di consumerthread : selesai isi data, itmsg = %d\n",itmsg);
我發現奇怪的是輸出:
di consumerthread : mulai isi data, itmsg = 42
di consumerthread : selesai isi data, itmsg = 98
怎麼來的itmsg
變量此行後突然從42
變爲98
?
msgq->data[itmsg]=rec_data;
可有人請告訴我如何解決這個問題,這個奇怪的輸出的原因是什麼?
'rec_data'可能是'msgq-> data [itmsg]'的引用,所以賦給'msgq-> data [itmsg]'會改變'itmsg'的值。這不太可能。 –
真的需要在這裏提供更多的上下文,也就是rec_data是什麼,等等。好像你可能正在寫數據數組之外並覆蓋它本身。 –
您的調試輸出似乎表明線程正在發生。 'itmsg'在不同的線程中被改變了嗎? –