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;
}

输出结果如下:


         
相关文章
|
6月前
boost异步
boost异步
|
6月前
|
Linux 程序员 C++
【C++ 常见的异步机制】探索现代异步编程:从 ASIO 到协程的底层机制解析
【C++ 常见的异步机制】探索现代异步编程:从 ASIO 到协程的底层机制解析
969 2
|
存储 Windows
asio源码解析
基于1.57版本
195 0
asio源码解析
|
存储 设计模式 Java
4.7 C++ Boost 多线程并发库
C++语言并没有对多线程与网络的良好支持,虽然新的C++标准加入了基本的`thread`库,但是对于并发编程的支持仍然很基础,Boost库提供了数个用于实现高并发与网络相关的开发库这让我们在开发跨平台并发网络应用时能够像Java等语言一样高效开发。 thread库为C++增加了多线程处理能力,其主要提供了清晰的,互斥量,线程,条件变量等,可以很容易的实现多线程应用开发,而且该库是可跨平台的,并且支持`POSIX`和`Windows`线程。
172 0
|
6月前
|
网络协议
boost asio异步小析
boost asio异步小析
|
6月前
boost asio多线程
boost asio多线程
boost::asio::read_until数据获取重复问题
利用boost::asio::read_until读http的chunk包,读取部分代码如下: 第一部分读取包头,第二部分循环读chunk包 如果不调用consume清空的话,while循环里一直获取到的是包头部分的内容...
1609 0
|
网络协议 编译器 消息中间件