线程死循环,怎么退出该线程

线程死循环,如何退出该线程
小弟想执行的功能是当程序处于该界面的时候创建一个线程,在该线程中一直不停的循环检测某个感应器状态,程序切换界面后该线程退出。线程中执行的是死循环,不知道该如何退出,小弟刚接触多线程,还请各位大神解惑。
------解决思路----------------------
你的线程参数是什么?如果是一个对象,那可以在该对象中增加控制变量
你也可以考虑增加信号量,一旦被锁就退出
------解决思路----------------------
信号量比较好,  不占用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;//线程就自动退出了

行吧?

------解决思路----------------------
大师们都说,线程退出,最好自然退出,不要强制的