关于多线程死循环如何退出。

我是想建一个线程死循环,再设定一个按扭来让线程退出死循环自己返回退出。我是这样弄的inta=1;//应该也算全局变量了吧建个线程在线程函数里whlie(a){};再别一个... 我是想建一个线程死循环,再设定一个按扭来让线程退出死循环自己返回退出。
我是这样弄的
int a=1; //应该也算全局变量了吧
建个线程
在线程函数里
whlie(a)
{};
再别一个按扭里把a=0;
发现这样并不能把死循环停止,我是想实现这样的功能,请问要怎么弄
是不是用bool
展开
 我来答
X_鸣人
推荐于2016-04-05 · 知道合伙人互联网行家
X_鸣人
知道合伙人互联网行家
采纳数:91 获赞数:256
今年毕业于广东省轻工职业技术学校。获得2015年全国职业院校技能大赛智能家居安装与维护二等奖。

向TA提问 私信TA
展开全部
可以定义标志位~
bool a=true;
..
white(a)
{
//线程方法
}
按钮按下时停止线程,可以a=false即刻!
如果是退出程序的话:
ExitThread函数可停止所有线程并且退出。
用法如下:
Application.ExitThread();
linux001
推荐于2016-09-12 · TA获得超过1401个赞
知道大有可为答主
回答量:1665
采纳率:100%
帮助的人:1366万
展开全部
看你的描述,是没有问题了。。我自己也测试了下,是可以达到你要的要求的...示例如下:
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)注释掉看效果。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
china_air_it
2012-11-11 · TA获得超过406个赞
知道小有建树答主
回答量:190
采纳率:0%
帮助的人:114万
展开全部
需要把变量设置成bool类型的。
追问
为什么要bool类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式