首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

多线程有关问题(PPC+MFC+VS2005)

2012-02-12 
多线程问题(PPC+MFC+VS2005)程序是这样的:1,在主线程中创建一个线程://创建线程m_pThreadA AfxBeginThre

多线程问题(PPC+MFC+VS2005)
程序是这样的:

1,在主线程中创建一个线程:

  //创建线程
m_pThreadA = AfxBeginThread((AFX_THREADPROC)XXXX::SplitThread, this, 0, THREAD_PRIORITY_NORMAL, CREATE_SUSPENDED);
if (m_pThreadA == NULL)
{//创建线程失败
return;
}
m_pThreadA->m_bAutoDelete = FALSE;
m_pThreadA->ResumeThread();

//线程函数SplitThread()中有一个大循环处理一些问题,并要读写文件 根据情况而定,有的需要几十秒线程执行完,有的则需要十几分钟或更多! 

2,线程创建完毕后,主线程会有一些控制键盘的操作,后台则继续执行那个创建的线程


现在问题是这样的,如果创建的线程处理小的东西只用几十秒执行完毕,那么还不怎么影响主线程的执行,而要是10几分钟的化,好像主线程就永远执行不到,没有分配时间片似的,出现“定版”,直等到线程执行10几分钟完毕时,才执行主线程,这样给人的印象就是“定版”,其实不是死锁,等次线程执行完10几分钟,主线程还是会执行的。

不知道问题出在那里,请各位大侠指教? p.s 主次线程中并没有共用一个变量或一个函数。



[解决办法]
有可能是PPC待机的时候,你的线程被挂起了!10几分钟的时间,你的PPC已经待机了。
[解决办法]
任务调度的问题,简单的做法是在 SplitThread 里把处理大的东西分割成小的块,每处理一块 Sleep 一下
[解决办法]
顶楼上,我也是这么想的。不知道有没有其它更高明的方法?
[解决办法]
高明的就是不 Sleep,需要主线程和 SplitThread 同步。

热点排行