怎样利用线程 随时中止循环的问题,急啊。
有一个循环很耗时,比如:
int t=0;
for (int i=0;i <100000;i++) { t++;if(t> 1000) t=0;}
我怎样利用线程随时中止这个循环啊!!!!!
最好给我一个实例(以上面这个例子就行),刚学bcb不久,望各位高人指点一二,谢谢!
分不多,莫见怪。
[解决办法]
创建一个全局变量,在头文件内
bool done;
// 构造函数内
done = false;
// 线程内
for (int i=0;i <100000;i++)
{
if ( dont == true ) // 其它单元重设, done = true 时跳出循环
break;
t++;if(t> 1000) t=0;
}
这种方法比较简单,但不是最理想的,你还可以用消息、或者全局原子来实现,不过基本原理差不多
[解决办法]
#include "Unit1.h "
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm "
TForm1 *Form1;
bool stop=false;
//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void loop1() //线程函数
{
int t=0;
for (int i=0;i <100000;i++)
{
t++;
if(t> 1000)
t=0;
if(stop)break; //标志
}
}
//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
CreateThread(NULL,0,LPTHREAD_START_ROUTINE(loop1),NULL,0,NULL); //创建线程
}
//---------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
stop=true; //中止循环标志
}
//---------------------------------------