多线程的问题

sunshine_2000 2000-06-29 05:34:00
下面这断程序,如果编译问题行,则运行结果只正确的,否则失错的。并且在调用thread线成后pParam出的内容变了。请问是怎么了?
谢谢!


UINT thread(LPVOID pParam)
{
char *no=(char*)pParam;
AfxMessageBox(no,MB_OK,NULL);
return 0;
}

void CThreadView::OnNewthread()
{
// TODO: Add your command handler code here
char text[11]={'a','b','c','d','e','f','g','h','i','j',0};
char add[10];
LONG r;int i;
for(i=0;i<10;i++)
add[i]=0;
r=(LONG)text;
itoa(r,add,16);
Thread=AfxBeginThread(thread,text,THREAD_PRIORITY_NORMAL,0,0,NULL);
CClientDC dc(this);
dc.TextOut (10,10,"Doing...");
/************************************/

AfxMessageBox(add,MB_OK,NULL);。。。。。。。问题行

/***********************************/

TerminateThread(Thread,0);
}
...全文
128 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
afly 2000-06-29
  • 打赏
  • 举报
回复
WHQ说得比较正确,应尽量避免在工作线程中执行有关GUI的操作,如要执行GUI操作可采用消息发送机制,向GUI主线程发送消息,由主线程响应消息,执行AfxMessageBox(no,MB_OK,NULL)调用。否则会造成冲突。
WHQ 2000-06-29
  • 打赏
  • 举报
回复
尽量避免在工作线程中执行有关GUI的操作,这可能会导致问题
Sundial 2000-06-29
  • 打赏
  • 举报
回复
thread运行时
char text[11]={'a','b','c','d','e','f','g','h','i','j',0};
已经被释放了
Dlf 2000-06-29
  • 打赏
  • 举报
回复
并行冲突

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧