线程引起溢出的问题!
szclm 2005-05-06 12:05:30 dword dwAddr = 0;
void funcA( void *pData )
{
(struct stA *) pstA = (struct stA *)pData;
//pWnd是全局的
dwAddr = (dword)pstA->pWnd;
}
//线程函数
void *funcB( void *pParam )
{
printf( "A point: %u\n", dwAddr );
...//do some thing
printf( "B point: %u\n", dwAddr );
...//do some thing
printf( "C point: %u\n", dwAddr );
return NULL;
}
int main(void)
{
for(;;)
{
//确保线程已结束
sleep( 10000 );
printf( "D point: %u\n", dwAddr);
...//do some thing
printf( "E point: %u\n", dwAddr);
create_thread( NULL, NULL, funcB, NULL);
printf( "F point: %u\n", dwAddr);
}
return 0;
}
funcA是被先执行的,确保了dwAddr是有值!且执行后得到一个正确的值!
在main中多次启动了线程函数funcB,在第一次执行时A-F打印出来的值都是正确的!
但问题是第二次时,A-F打印是同一个值,但已经不正解了!
请问:各位高手,这样会是由于什么的情况引起的呢?