多线程的问题 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,你就会创建一个线程?多个线程操作同一个公共缓冲区,需要同步,比如利用临界区