QT线程问题,高手救我。。。。。

alamtang 2002-09-23 06:47:43
主线程:
void MainThread::run()
{
while(1)
{
for( int i=0; i< pCard->nMaxCh; i++ )
{
if( pCard->ATrkCh[i].enMissionType==MISSION_NO_APPOINT
&&( (pCard->ATrkCh[i].nShChType != 0 && SsmGetHookState(i) == 1) // when channnel is internal
||(pCard->ATrkCh[i].nShChType == 0 && SsmGetChState(i) == S_CALL_RINGING))// when channnel is external
)
{
pCard->ATrkCh[i].enMissionType=MISSION_PBX;
SubThread *pSubThread=new SubThread::SubThread(pCard,i); //start a new sub thread

pSubThread->start();
}

}
sleep(1);
}
}

如看到满足条件就New 一个子线程如下:
void SubThread::run()
{

....................................
....................................

ListenToDtmf();
// int iii=0;
// while(iii<100000)
// {
// iii++;
// cout<<"iii====="<<iii<<endl;
// sleep(1);
// }
cout<<"@@@@@@@@@@@@@@@@@@@ End ListenDtmf End SubThread::Run()--@@@@@@@@@@@@@@@@@@@"<<endl;
}

最后执行完listenToDtmf()都无问题,cout<<"@@@@@@@@@@@@@@@@@@@ End ListenDtmf End SubThread::Run()--@@@@@@@@@@@@@@@@@@@"<<endl;
也可打印出来,就是打印完此句返回MainThread()时出错,出错信息:segmentation fault
应是内存出错,但我有一个同样功能的模块又无此问题,困了一整天了,
恳请高手提示解决。。。
先行谢过!




...全文
58 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
blh 2002-09-24
  • 打赏
  • 举报
回复
你去订没有cout是否是线程安全的???
alamtang 2002-09-24
  • 打赏
  • 举报
回复
我需要知道QT在从子线程返回主线程时都做了些什么。。
alamtang 2002-09-24
  • 打赏
  • 举报
回复
如我把
int iii=0;
while(iii<100000)
{
iii++;
cout<<"iii====="<<iii<<endl;
sleep(1);
}
这些加上去,即让这个子线程继续运行,不要让他跑到Run 的最后一行,然后在
主线程可继续New新的子线程,但一跑完这个循环马上出现segmentation fault并退出。

也就是说运行完子线程返回主线程时出错,但这部分是QT做的我根本无从Debug,
唉!郁闷极了
alamtang 2002-09-24
  • 打赏
  • 举报
回复
上午忙得要命,
老猫兄如何说?
alamtang 2002-09-23
  • 打赏
  • 举报
回复
等待中

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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