首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 内存分配问题急.
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 08:13:24 楼主
    void CDomainG::OnTimer(UINT nIDEvent) 
    {
      MyDefStr glTagMsg[100000];

    // TODO: Add your message handler code here and/or call default
    CEdit *CEXECUTE_TIME=(CEdit*)GetDlgItem(IDC_EDIT_EXECUTE_TIME);
    CTime time=CTime::GetCurrentTime();
    CEXECUTE_TIME->SetWindowText(time.Format("%Y-%m-%d %H:%M:%S"));

        if(theApp.m_CONDITIONS=="现在执行")
    {
         
        if(thDomain=="1"){
          thDomain="0";
          for(int i=0;i <=DomainName_c;i++){
    Domain_i++;
    glTagMsg[i].pDlg=this;
                glTagMsg[i].DomainName_c_i=i;
         
    CWinThread* pThread = AfxBeginThread(MyThread,&glTagMsg[i],THREAD_PRIORITY_IDLE);
      // pThread->ResumeThread();
    }
     
      }
    }else{
      if(thDomain=="1"&&time.Format("%H:%M:%S")>theApp.m_starttime&&time.Format("%H:%M:%S") <theApp.m_overtime){
      // thDomain="0";
        for(int i=0;i <=DomainName_c;i++){
    Domain_i++;
    glTagMsg[i].pDlg=this;
                glTagMsg[i].DomainName_c_i=i;
    CWinThread* pThread = AfxBeginThread(MyThread,&glTagMsg[i],THREAD_PRIORITY_IDLE);
        //pThread->ResumeThread();
    }
     
      }
    }


    CDialog::OnTimer(nIDEvent); 
    }

    运行时间过长的个话会出错.什么解决.但如果是直接关闭窗口什么让这些现成关闭掉
    60  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 08:30:471楼 得分:0
    MyDefStr glTagMsg[100000];
    。。。。。。。。。。。。。。。。。。。。。。
    你开的现程太多了 ,系统撑不住了,就挂了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 08:37:212楼 得分:0
    需要那么多线程什么办呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 08:43:023楼 得分:0
    DomainName_c是多少?
    在线程函数中操作glTagMsg的用临界区
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 08:44:554楼 得分:0
    用线程池,没有一个程序说需要那么多线程的,多线程是相对的,你10000个线程,没10个线程速度快。你可以把处理任务放入队列,让10线程来处理。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-04-30 09:36:535楼 得分:0

    设置个断点调试一下

    进程正常启动后应该保留其句柄以便在合适的地方销毁进程
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cnzdgs
    • 等级:
    发表于:2008-04-30 14:21:206楼 得分:0
    每个线程的栈空间默认是1MB,最多开到1000多个时进程的地址空间就耗尽了。另外,局部动态变量不能作为参数传递给线程,因为函数返回时就释放了。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved