线程的停止与回收

#define _CRT_SECURE_NO_WARNINGS /* VS2013,2015需要这一行 */
#include <stdio.h>

#include "osapi/osapi.h"

// 定义一个类
class Buddhist : public OS_Thread
{
public:
    int Start()
    {
        // 其他准备工作
        m_quitflag = false;
        Run();
        return 0;
    }

    void Stop()
    {
        m_quitflag = true;
        Join(this);
    }

private:
    // 线程主函数
    virtual int Routine()
    {
        // 线程体: 执行它的任务
        for(int i=0; !m_quitflag && i<100; i++)
        {
            printf("ma mi ma mi hong ...\n");
            OS_Thread::Sleep(1);
        }
        printf("Task Exit.\n");
        //  保存数据,善后工作
        printf("善后工作...\n");
        return 0; // 正常退出
    }

private:
    bool m_quitflag;

};

int main()
{
    Buddhist  task1;
    task1.Start();

    getchar();
    task1.Stop();

    return 0;
}

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注