多线程的问题 望高手指教

奇华智能 奇华智能 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚学的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的值都相同(只是其中一个);输入三个的时候,有两相同;输入四个的时候,有三个相同....

刚接触这一块,请高手指教
...全文
评论 7
收藏 已收藏
分享
返回顶部
奇华智能
进程/线程/DLL 15,466 成员 49,169 内容