栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++多线程学习笔记(二)之线程入口并封装线程基类接口

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++多线程学习笔记(二)之线程入口并封装线程基类接口

今天我们来扩展c++多线程学习中的关于线程入口并封装线程基类接口的内容,这部分内容也是相对来说比较重要的,涉及到类与成员函数,还有几个比较常见又陌生的概念。下面让我们一起来看看吧。

首先下面是基本接口的调用:

下面是样例代码:

#include
#include
#include
using namespace std;
class MyThread
{
public:
    //入口线程函数
    void Main()
    {
        cout << "MYthread main" << name << ":" << age;
    }
    string name ;
    int age = 100;
};
class Xthread//线程的基类
{
public:
    virtual void Start()//启动线程的接口
    {
        is_exit_ = false;
        th_=std::thread(&Xthread::Main,this);
    }
    virtual void Stop()
    {
        is_exit_ = true;
        Wait();
    }
    virtual void Wait()
    {
        if (th_.joinable())
        {
            th_.join();
        }
    }
    bool is_exit()
    {
        return is_exit_;
    }
private:
    virtual void Main() = 0;//纯虚函数,不用实现
    std::thread th_;//维护th_的对象
    bool is_exit_ = false;
};
class TestXthread:public Xthread
{
public:
    void Main()override//确保不会写错,不要等到编译才报错
    {
        cout << "begin" << endl;
        cout << "TestXTHREAD Main" << endl;
        while (!is_exit())
        {
            this_thread::sleep_for(100ms);
            cout << "." << flush;//加个flush来刷新,确保点会显示
        }
        cout << "end" << endl;
    }
    string name;

};
//主线程入口
int main(int argc,char* argv[])
{
    TestXthread testth;//启动基类线程
    testth.name = "TestXThread name";
    testth.Start();
    this_thread::sleep_for(3s);//3s后退出
    testth.Stop();
    testth.Wait();
    getchar();
    MyThread myth;
    myth.name = "TEST NAME 001";
    myth.age = 20;
    thread th(&MyThread::Main,&myth);//传入子线程:传入成员函数的指针和当前对象的地址
    th.join();
    return 0;
}

程序执行图:...执行了3s后停下来。

好啦,关于c++多线程的线程入口并封装线程基类接口这部分内容就到这啦,由于博主现在也正在学习这部分内容,若有错误和建议,请评论区指出哦。

本贴为博主亲手整理。如有错误,请评论区指出,一起进步。谢谢大家的浏览.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/857686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号