线程死循环,怎么退出该线程
线程死循环,如何退出该线程
小弟想执行的功能是当程序处于该界面的时候创建一个线程,在该线程中一直不停的循环检测某个感应器状态,程序切换界面后该线程退出。线程中执行的是死循环,不知道该如何退出,小弟刚接触多线程,还请各位大神解惑。
------解决思路----------------------
你的线程参数是什么?如果是一个对象,那可以在该对象中增加控制变量
你也可以考虑增加信号量,一旦被锁就退出
------解决思路----------------------
信号量比较好, 不占用CPU时间
------解决思路----------------------
设置 一个 volatile BOOL m_bExit 变量
------解决思路----------------------
bool g_bWork = false;
1.来到这个界面时:
if(g_bWork == false)
{
g_bWork = true;
::CreateThread or begintherad(,,,MyThreadFunc);
}
2.线程函数体:
MyThreadFunc()
{
while(g_bWork)
{
//检测感应器代码
}
}
3.离开此界面时:
g_bWork = false;//线程就自动退出了
行吧?
------解决思路----------------------
大师们都说,线程退出,最好自然退出,不要强制的
小弟想执行的功能是当程序处于该界面的时候创建一个线程,在该线程中一直不停的循环检测某个感应器状态,程序切换界面后该线程退出。线程中执行的是死循环,不知道该如何退出,小弟刚接触多线程,还请各位大神解惑。
------解决思路----------------------
你的线程参数是什么?如果是一个对象,那可以在该对象中增加控制变量
你也可以考虑增加信号量,一旦被锁就退出
------解决思路----------------------
信号量比较好, 不占用CPU时间
------解决思路----------------------
设置 一个 volatile BOOL m_bExit 变量
------解决思路----------------------
bool g_bWork = false;
1.来到这个界面时:
if(g_bWork == false)
{
g_bWork = true;
::CreateThread or begintherad(,,,MyThreadFunc);
}
2.线程函数体:
MyThreadFunc()
{
while(g_bWork)
{
//检测感应器代码
}
}
3.离开此界面时:
g_bWork = false;//线程就自动退出了
行吧?
------解决思路----------------------
大师们都说,线程退出,最好自然退出,不要强制的