boost asio异步和stl异步的简单对比

简介: boost asio异步和stl异步的简单对比

boost asio异步代码

#include <iostream>
#include <boost/asio.hpp>
#include <boost/thread.hpp>
void print(const int data)
{
  if (data == 99999)
    std::cout << data << std::endl;
}
int main()
{
  boost::asio::io_service io_service;
  boost::asio::io_service::work work(io_service);
  UINT tm1 = GetTickCount();
  for (int i = 0;i < 100000; i++)
  {
    io_service.post(std::bind(&print, i));
  }
  UINT tm2 = GetTickCount();
  std::cout << "cost:" << tm2 - tm1 << std::endl;
  try
  {
    boost::thread([&]() {
      io_service.run();
    });
  }
  catch (...)
  {
  }
  getchar();
  return 0;
}

结果打印:

stl异步代码:

#include <iostream>
#include <future>
#include <Windows.h>
void print(const int data)
{
  if (data == 99999)
    std::cout << data << std::endl;
}
int main()
{
  UINT tm1 = GetTickCount();
  for (int i = 0;i < 100000; i++)
  {
    std::async(std::bind(&print, i));
  }
  UINT tm2 = GetTickCount();
  std::cout << "cost:" << tm2 - tm1 << std::endl;
  getchar();
  return 0;
}

输出结果如下:


         
相关文章
|
7月前
boost异步
boost异步
|
7月前
|
存储 安全 算法
【C++ 包装器类 std::atomic 】全面入门指南:深入理解并掌握C++ std::atomic 原子操作 的实用技巧与应用
【C++ 包装器类 std::atomic 】全面入门指南:深入理解并掌握C++ std::atomic 原子操作 的实用技巧与应用
635 1
|
存储 设计模式 Java
4.7 C++ Boost 多线程并发库
C++语言并没有对多线程与网络的良好支持,虽然新的C++标准加入了基本的`thread`库,但是对于并发编程的支持仍然很基础,Boost库提供了数个用于实现高并发与网络相关的开发库这让我们在开发跨平台并发网络应用时能够像Java等语言一样高效开发。 thread库为C++增加了多线程处理能力,其主要提供了清晰的,互斥量,线程,条件变量等,可以很容易的实现多线程应用开发,而且该库是可跨平台的,并且支持`POSIX`和`Windows`线程。
187 0
|
7月前
boost asio多线程
boost asio多线程
|
7月前
|
网络协议
boost asio异步小析
boost asio异步小析
|
JSON Go 数据格式
Go语言,struct 实现原理
struct 在声明时可以附带的 Tag。Tag 用来对字段做标记,主要用于反射场景,reflect 包提供了用来操作 Tag 的方法。
116 0
Go语言,struct 实现原理
|
Go JavaScript
boost::asio::read_until数据获取重复问题
利用boost::asio::read_until读http的chunk包,读取部分代码如下: 第一部分读取包头,第二部分循环读chunk包 如果不调用consume清空的话,while循环里一直获取到的是包头部分的内容...
1619 0
|
网络协议 编译器 消息中间件