zoukankan      html  css  js  c++  java
  • 线程基础2

    #include <thread>
    void func()
    {
       // do some work
    }
    int main()
    {
       std::thread t(func);
       t.join();
       return 0;
    }

    带参数

    void func(int i, double d, const std::string& s)
    {
        std::cout << i << ", " << d << ", " << s << std::endl;
    }
    int main()
    {
       std::thread t(func, 1, 12.50, "sample");
       t.join();
       return 0;
    }
    #include <thread>
    #include <iostream>
    #include <string>
    #include <functional>
    
    void greeting(std::string const& message)
    {
        std::cout<<message<<std::endl;
    }
    
    int main()
    {
        std::thread t(std::bind(greeting,"hi!"));
        t.join();
    }

    传引用

    void func(int& a)     //这里参数声明要是引用形式
    {
        a++;
    }
    int main()
    {
        int a = 42;
        std::thread t(func, std::ref(a)); // 配合函数声明为引用形式,这两者同时存在,a的值才能改变。
        t.join();
        std::cout << a << std::endl;
        return 0;
    }

    线程调用:类重载()

    #include <thread>
    #include <iostream>
    class SayHello
    {
    public:
        void operator()() const
        {
            std::cout<<"hello"<<std::endl;
         std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    };
    int main()
    {
        std::thread t((SayHello()));
        t.join();
       SayHello hello;
        std::thread t1(hello);
        t1.join();
       std::thread t2=std::thread(SayHello());
         t2.join();

        std::thread t3{ SayHello() };
        t3.join();

    }

     线程调用:类成员函数:

    #include <thread>
    #include <iostream>
    # include <memory>
    
    class SayHello
    {
    public:
        void greeting() const
        {
            std::cout << "hello" << std::endl;
        }
        void good(std::string const& message) const
        {
            std::cout << message << std::endl;
        }
    
    };
    int main()
    {
        SayHello x;
        std::thread t(&SayHello::greeting, &x);
        std::thread t1(&SayHello::good, &x, "good");
        t.join();
        t1.join();
    
    
        std::shared_ptr<SayHello> p(new SayHello);
        std::thread t2(&SayHello::good, p, "goodbye");
        t2.join();
    }
  • 相关阅读:
    20170417列表的count计数、index、reverse、sort函数
    (一)grpc-创建一个简单的grpc 客户端和服务器
    通用装饰器
    Git学习(一):Git介绍、仓库和分支等基本概念解释
    APP测试
    接口测试用例设计
    笔记整理
    接口测试
    gzip -压缩与解压缩
    declare 命令 -声明shell 变量
  • 原文地址:https://www.cnblogs.com/yuguangyuan/p/5857821.html
Copyright © 2011-2022 走看看