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

多线程的有关问题 debug assertion failed

2012-04-15 
多线程的问题 debug assertion failed一直使用多个定时器,结果发现互相有影响,采集数据的定时器偶尔采集的

多线程的问题 debug assertion failed
一直使用多个定时器,结果发现互相有影响,采集数据的定时器偶尔采集的数据个数比较少;听说多线程可以新开时间片,解决这个问题,就创建了一个线程,可是定时器不能在线程里调用,只好把线程放到定时器里。好象没有解决什么问题,反而出现了新的问题,程序如下:[code=C/C++]
                    if   (nIDEvent==2)   //定时器创建线程
{
          HANDLE   hThread=CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
          CloseHandle(hThread);
}
                  DWORD   WINAPI   ThreadProc(LPVOID   lpParameter)
                  {
          int   i;
          for   (i=1;i <=10000;i++)
          {
str4.Format( "%d\n ",i);
str2+=str4;//问题就出在这条语句,去掉之后没有错误,不去就报错debug   assertion   failed
            }
          return   0;
                  }

[/code]


[解决办法]
既然开了线程,那就不要定时器,在循环里加个Sleep不就是实现定时了么
多线程对变量操作时要注意加锁
[解决办法]
你的设计有问题 为什么线程要放到定时器中启动
[解决办法]
每次响应WM_TIMER,你就会创建一个线程?多个线程操作同一个公共缓冲区,需要同步,比如利用临界区

热点排行