关于多线程死循环如何退出。
我是想建一个线程死循环,再设定一个按扭来让线程退出死循环自己返回退出。我是这样弄的inta=1;//应该也算全局变量了吧建个线程在线程函数里whlie(a){};再别一个...
我是想建一个线程死循环,再设定一个按扭来让线程退出死循环自己返回退出。
我是这样弄的
int a=1; //应该也算全局变量了吧
建个线程
在线程函数里
whlie(a)
{};
再别一个按扭里把a=0;
发现这样并不能把死循环停止,我是想实现这样的功能,请问要怎么弄
是不是用bool 展开
我是这样弄的
int a=1; //应该也算全局变量了吧
建个线程
在线程函数里
whlie(a)
{};
再别一个按扭里把a=0;
发现这样并不能把死循环停止,我是想实现这样的功能,请问要怎么弄
是不是用bool 展开
3个回答
展开全部
看你的描述,是没有问题了。。我自己也测试了下,是可以达到你要的要求的...示例如下:
int a=1;
VOID WINAPI ThreadStart(PVOID para)
{
while(a)
{
printf("a");
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hThread = ::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)&ThreadStart,NULL,0,NULL);
Sleep(100);
a=0;
system("pause");
return 0;
}
100ms 后线程正常终止.
int a=1;
VOID WINAPI ThreadStart(PVOID para)
{
while(a)
{
printf("a");
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hThread = ::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)&ThreadStart,NULL,0,NULL);
Sleep(100);
a=0;
system("pause");
return 0;
}
100ms 后线程正常终止.
追问
谢谢你的回答
我的意思是,先用一个按扭点击后开个死循环的线程,再用另外一个按扭来退出多线程(或同一个按扭也行)
你这代码好像是线程从开始到结束是100ms,不是受控制的。
追答
你错了。。。我创建的那个线程函数是while(a)。在主线程中,暂停了100ms后把变量设成了a=0;控制台程序只能这样写。跟你的按钮没区别。你可以在控制台试试。把Sleep(100)注释掉看效果。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要把变量设置成bool类型的。
追问
为什么要bool类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询