美文网首页
c++多线程异步通讯

c++多线程异步通讯

作者: 一路向后 | 来源:发表于2021-09-04 21:29 被阅读0次

1.源码实现

#include <iostream>
#include <future>
#include <thread>

using namespace std;
using namespace std::this_thread;
using namespace std::chrono;

/*费时操作*/
void work1(promise<int> &prom, int a, int b)
{
    cout << "work 1 开始计算: " << endl;
    sleep_for(seconds(3));
    prom.set_value(a+b);
}

int work2(int a, int b)
{
    cout << "work 2 开始计算: " << endl;
    sleep_for(seconds(2));
    return a + b;
}

int work3(int a, int b)
{
    cout << "work 3 开始计算: " << endl;
    sleep_for(seconds(2));
    return a + b;
}

int main()
{
    /*promise内部包装了一个值*/
    promise<int> prom;
    future<int> f1 = prom.get_future(); /*使用get_future函数获取future*/
    thread(work1, ref(prom), 1, 2).detach();
    f1.wait();  /*等待值设定*/

    cout << "计算结果: " << f1.get() << endl;

    /*packaged_task包装一个操作*/
    packaged_task<int(int, int)> task(work2);
    future<int> f2 = task.get_future(); /*使用get_future函数获取future*/
    thread(move(task), 11, 22).detach();
    f2.wait();

    cout << "计算结果: " << f2.get() << endl;

    /*async内部是一个线程*/
    future<int> f3 = async(work3, 45, 34);
    f3.wait();

    cout << "计算结果: " << f3.get() << endl;

    return 0;
}

2.编译源码

$ g++ -o example example.cpp -lpthread -std=c++11

3.运行及其结果

$ ./example
work 1 开始计算: 
计算结果: 3
work 2 开始计算: 
计算结果: 33
work 3 开始计算: 
计算结果: 79

相关文章

  • c++多线程异步通讯

    1.源码实现 2.编译源码 3.运行及其结果

  • swoole日记

    PHP的协程高性能网络通信引擎,使用C/C++语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络...

  • 多线程

    多线程开发 - 异步 多线程 - 延迟 多线程 - 异步延迟 discardableResult 就是说返回值可以...

  • 异步通讯

    epoll的作用 监听io流的变化,返回事件。 epoll 操作 创建: epoll_create 注册: epo...

  • C++ 多线程

    C++ 多线程 | 菜鸟教程 C++ 11 多线程--线程管理 - Brook_icv - 博客园

  • iOS 多线程基础

    转自:iOS 多线程基础 - 简书 多线程同步和异步的区别?IOS中如何实现多线程的同步? 异步:可以同时执行多条...

  • 多线程(三)——多线程之间通讯

    什么是多线程之间通讯 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。 多线程之间通讯需求:...

  • 3.多线程之间通讯

    什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。 多线程之间通讯需求...

  • 一篇文章,搞明白异步和多线程的区别

    最近在研究Spring Boot中的异步处理,发现涉及到异步和多线程的很多知识点,就先写几篇关于异步与多线程的文章...

  • 并发

    并发 多线程 异步IO 多进程

网友评论

      本文标题:c++多线程异步通讯

      本文链接:https://www.haomeiwen.com/subject/mvhdwltx.html