多线程的问题 望高手指教

AAA小肥杨 2011-03-24 05:22:11
刚学的MFC 用到多线程,
struct InPutVido
{
const char *FileName;
int WndID;
};

线程函数
UINT ThreadFunc1(LPVOID lpa)
{
const char* inFileName=*(const char**)lpa;
TRACE(_T("%s\n"),inFileName);
AfxMessageBox(inFileName);
return 0;
}
void CVidoDetectDlg::CreatAllThread(vector<InPutVido> AllVido)
{
int OpenedVidoNum=AllVido.size();
CWinThread** _pThread1;
_pThread1=new CWinThread*[OpenedVidoNum];
for (int i=0;i<OpenedVidoNum;i++)
{
const char* filenamge=AllVido[i].FileName;
_pThread1[i] = AfxBeginThread(ThreadFunc1,&filenamge,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
_pThread1[i]->ResumeThread();
}
}
AllVido 用户输入的文件信息,文件名
功能:根据用户的输入AllVido的大小OpenedVidoNum,创建OpenedVidoNum个线程,每个线程里面应该得到一个const char*字符串(文件名)。
问题:当输入一个时候没问题;输入两个时候,TRACE 显示两个线程inFileName的值都相同(只是其中一个);输入三个的时候,有两相同;输入四个的时候,有三个相同....

刚接触这一块,请高手指教
...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
King_hhuang 2011-03-25
  • 打赏
  • 举报
回复
你怎么不自己搜索一下
http://blog.sina.com.cn/s/blog_5c4aa6bc0100gdbm.html
http://yachang.wang.blog.163.com/blog/static/35551220200762753057335/
http://wenku.baidu.com/view/c162612acfc789eb172dc866.html
AAA小肥杨 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fishion 的回复:]

UINT ThreadFunc1(LPVOID lpa)
{
const char* inFileName=(const char*)lpa;TRACE(_T("%s\n"),inFileName);
AfxMessageBox(inFileName);
return 0;
}


const char* filenamge=AllVido[i].FileName;
_p……
[/Quote]

你说这个挺有用的,再向你请教一下,多线程,堆,栈,参数传递这些有些什么联系或者过程。谢谢
AAA小肥杨 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 yangyin007 的回复:]
刚学的MFC 用到多线程,
struct InPutVido
{
const char *FileName;
int WndID;
};

线程函数
UINT ThreadFunc1(LPVOID lpa)
{
const char* inFileName=*(const char**)lpa;
TRACE(_T("%s\n"),inFileName);
AfxMessag……
[/Quote]
你说这个挺有用的,再向你请教一下,多线程,堆,栈,参数传递这些有些什么联系或者过程。谢谢
King_hhuang 2011-03-24
  • 打赏
  • 举报
回复
你怎么喜欢用那么多*
fishion 2011-03-24
  • 打赏
  • 举报
回复
还有,你要确定下AllVido[i].FileName的值是不是不一样的
fishion 2011-03-24
  • 打赏
  • 举报
回复
UINT ThreadFunc1(LPVOID lpa)
{
const char* inFileName=(const char*)lpa;TRACE(_T("%s\n"),inFileName);
AfxMessageBox(inFileName);
return 0;
}


const char* filenamge=AllVido[i].FileName;
_pThread1[i] = AfxBeginThread(ThreadFunc1,(LPVOID)filenamge,THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED,NULL);
_pThread1[i]->ResumeThread();

15,471

社区成员

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

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