boost
金士顿
这个作者很懒,什么都没留下…
展开
-
Linux和windows临界区
1.声明#ifdef _LINUXpthread_mutex_t mutex_lock;#endif#ifdef WIN32CRITICAL_SECTION mutex_lock;#endif2.初始化#ifdef _LINUXpthread_mutex_init(&mutex_lock, NULL);#endif#ifdef WIN32...转载 2018-10-22 13:50:43 · 793 阅读 · 0 评论 -
不仅仅是网络通信 Boost.Asio支持信号量
除了网络通信,Boost.Asio还包含了其他的I/O功能。Boost.Asio支持信号量,比如SIGTERM(软件终止)、SIGINT(中断信号)、SIGSEGV(段错误)等等。 你可以创建一个signal_set实例,指定异步等待的信号量,然后当这些信号量产生时,就会调用你的异步处理程序:void signal_handler(const boost::system::error_co原创 2017-10-26 19:40:34 · 395 阅读 · 0 评论 -
服务端应用中的同步I/O boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #incl原创 2017-11-03 13:55:05 · 327 阅读 · 0 评论 -
【Boost】boost库中thread多线程详解4——谈谈recursive_mutex(递归式互斥量)
如果一个线程中可能在执行中需要再次获得锁的情况(例子:test_thread_deadlock),按常规的做法会出现死锁。此时就需要使用递归式互斥量boost::recursive_mutex,例子(test_thread_recursivelock)来避免这个问题。boost::recursive_mutex不会产生上述的死锁问题,只是是增加锁的计数,但必须确保你unlock和lock的次数转载 2017-11-03 13:52:45 · 428 阅读 · 0 评论 -
客户端应用中的同步I/O boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #incl原创 2017-11-03 10:25:10 · 321 阅读 · 0 评论 -
复归
转载地址:http://bbs.co188.com/thread-1967385-1-1.html复归用于对保护动作事件的复置;复位由于对保护自检故障的复置。如是自检故障不复位会影响保护功能的正常发挥转载 2017-11-02 16:57:37 · 670 阅读 · 0 评论 -
7. Networking basics: connectors and acceptors (TCP)
#include #include #include #include #include #include #include #include using namespace std;using namespace boost;using namespace asio;boost::mutex global_stream_lock;原创 2017-10-16 17:05:32 · 200 阅读 · 0 评论 -
boost::deadline_timer
boost::deadline_timer定义typedef basic_deadline_timer deadline_timer;basic_deadline_timer是个模板类。构造函数deadline_timer有三个构造函数:1 explicit basic_deadline_timer(boost::asio::io_service& io_servi转载 2017-10-16 15:48:16 · 733 阅读 · 0 评论 -
boost::asio::deadline_timer(理解)
并发与并行: 并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。1.Timer.1 - 使用同步定时器 先完整介绍一下,后面的例子该省略的就省略了。 所有的Asio类只要简单的包含"asio.hpp"头文件便可使用:#include 因为本程序中使用了定时器,转载 2017-10-16 15:41:27 · 5024 阅读 · 4 评论 -
串行端口 boost asio
你可以使用Boost.Asio轻松地连接到一个串行端口。在Windows上端口名称是COM7,在POSIX平台上是/dev/ttyS0。io_service service;serial_port sp(service, "COM7");打开端口后,你就可以使用下面的代码设置一些端口选项,比如端口的波特率、奇偶校验和停止位。serial_port::baud_rate rate(960原创 2017-10-26 19:44:01 · 273 阅读 · 0 评论 -
计时器 boost asio
一些I/O操作需要一个超时时间。这只能应用在异步操作上(同步意味着阻塞,因此没有超时时间)。例如,你的下一条信息必须在100毫秒内从你的同伴那传递给你。bool read = false;void deadline_handler(const boost::system::error_code &) {std::cout }void read_handler(const boo原创 2017-10-26 19:57:27 · 289 阅读 · 0 评论 -
异步客户端 boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #incl原创 2017-11-06 13:28:42 · 352 阅读 · 0 评论 -
-lpthread -lboost_thread undefined reference to `vtable for boost::detail::thread_data_base'问题
同样是boost.asio中用到boost.thread处理I/O,编译出错:undefined reference to `vtable for boost::detail::thread_data_base’环境ubuntu14.04g++ 4.8.4解决办法I had the same question, but -lboost_thread-mt is now deprec...转载 2018-10-22 13:38:50 · 712 阅读 · 0 评论 -
centos7 boost学习1 使用boost::asio实现简易线程池 -lboost_system
转载地址:https://segmentfault.com/a/1190000010674396threadpool.h#include <stdio.h>#include <string.h>#include <iostream>//#include <boost/thread/thread_pool.hpp>#include &...原创 2018-10-17 11:18:07 · 657 阅读 · 0 评论 -
C++中Boost使用出现错误undefined reference to `boost::system::generic_category()'解决方法
转载地址:https://blog.csdn.net/qq_31261509/article/details/79412700 编译环境 ubuntu16.04 idea Clion运行出现问题CMakeFiles/untitled.dir/main.cpp.o: In function `__static_initialization_and_destruction_0...转载 2018-10-17 10:22:16 · 9429 阅读 · 0 评论 -
ASIO 腾空出世 (那些年我们追过的网络库.PartII)
## ASIO 腾空出世在地球最大的岛上,另一位少年开始拜读 ACE 的大作。那时候,没有 libuv 没有 libev 更没有 libevent . 有的只是 ACE.然而这个南方小国的少年没有跟风陷入 ACE 崇拜,他以敏锐的目光察觉到了 ACE 的弊病。ACE 哪里做的不好?又哪里是值得借鉴的?少年在给 c++ 委员会写的一篇上书中说,Proactor 模型乃最优模型转载 2017-12-19 08:21:11 · 2550 阅读 · 1 评论 -
那些年我们追过的网络库(PartI)
转载地址:https://microcai.org/2015/09/14/history-of-network-libraries-part-one.html#disqus_thread#为什么要用 C++ 编写服务端程序? 如果说答案是性能,那么肯定有人会满不在乎。觉得性能不够的话, 只要加机器就可以了。 然而更少的机器,意味着更低的能耗,更少的硬件投入,更少的人力资源投入去维护机器转载 2017-12-18 16:53:24 · 369 阅读 · 0 评论 -
开源C++函数库Boost内存池使用与测试
【IT168 专稿】Boost库是一个可移植的开源C++函数库,鉴于STL(标准模板库)已经成为C++语言的一个组成部分,可以毫不夸张的说,Boost是目前影响最大的通用C++库。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容,是一个“准”标准库。 Boost内存池,即boost.pool库,是由Boost提供的一个用于内存池管理的开源C++库转载 2017-12-13 16:57:13 · 384 阅读 · 0 评论 -
boost::async_read_some连续接收数据
"font-size:18px">我在最近工作的时候用到了boost的http_server程序,这个http_server是一个框架用于接收并解析http协议。这个框架在接收get请求时没有任何问题,当接收post数据时,当数据大于>2k时,无法正确接收,后来发现sync_read_some函数一次只能接收大约1k数据,如果要接收大数据,需要反复接收,自己修改了几天,将经验分享一下。 //转载 2017-11-30 18:33:08 · 3673 阅读 · 2 评论 -
异步服务端 boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #原创 2017-11-06 15:09:50 · 259 阅读 · 0 评论 -
异步服务端(一) boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #原创 2017-11-02 10:27:24 · 444 阅读 · 0 评论 -
异步服务端 boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #原创 2017-11-01 14:31:18 · 233 阅读 · 0 评论 -
post() vs dispatch()
post() vs dispatch()post()和dispatch()都是要求io_service执行一个handler,但是dispatch()要求立即执行,而post()总是先把该handler加入事件队列。什么时候需要使用post()?当不希望立即调用一个handler,而是异步调用该handler,则应该调用post()把该handler交由io_service放到事件原创 2017-10-11 15:19:08 · 1503 阅读 · 0 评论 -
boost延时函数sleep
主线程:boost::thread::sleep(boost::get_system_time() + boost::posix_time::seconds(5)); 子线程:boost::this_thread::sleep(boost::get_system_time() + boost::posix_time::seconds(2));原创 2017-10-11 14:29:38 · 4486 阅读 · 0 评论 -
Boost::asio io_service 实现分析
io_service的作用io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的队列。Io_servie的接口提供的接口有run、run_one、poll、poll_转载 2017-10-11 14:25:40 · 457 阅读 · 0 评论 -
套接字 boost asio
socket成员方法这些方法被分成了几组。并不是所有的方法都可以在各个类型的套接字里使用。这个部分的结尾将有一个列表来展示各个方法分别属于哪个socket类。注意所有的异步方法都立刻返回,而它们相对的同步实现需要操作完成之后才能返回。连接相关的函数这些方法是用来连接或绑定socket、断开socket字连接以及查询连接是活动还是非活动的:assign(protocol,原创 2017-10-27 15:05:36 · 1647 阅读 · 0 评论 -
端点 boost asio
端点是你用某个端口连接到的一个地址。不同的类型socket有它自己的endpoint类,比如ip::tcp::endpoint、ip::udp::endpoint和ip::icmp::endpoint如果想连接到本机的80端口,你可以这样做:ip::tcp::endpoint ep( ip::address::from_string("127.0.0.1"), 80);有三种方式来让你建立原创 2017-10-27 14:50:53 · 241 阅读 · 0 评论 -
IP地址 boost asio
对于IP地址的处理,Boost.Asio提供了ip::address , ip::address_v4和ip::address_v6类。 它们提供了相当多的函数。下面列出了最重要的几个:ip::address(v4_or_v6_address):这个函数把一个v4或者v6的地址转换成ip::addressip::address:from_string(str):这个函数根据一个IPv4地址原创 2017-10-27 14:44:30 · 3996 阅读 · 0 评论 -
Boost.Asio命名空间
Boost.Asio的所有内容都包含在boost::asio命名空间或者其子命名空间内。Boost.Asio的所有内容都包含在boost::asio命名空间或者其子命名空间内。boost::asio:这是核心类和函数所在的地方。重要的类有io_service和streambuf。类似read, read_at,read_until方法,它们的异步方法,它们的写方法和异步写方法等自由函数也在原创 2017-10-27 13:45:07 · 316 阅读 · 0 评论 -
io_service类 boost asio
你应该已经发现大部分使用Boost.Asio编写的代码都会使用几个io_service的实例。ios_service是这个库里面最重要的类;它负责和操作系统打交道,等待所有异步操作的结束,然后为每一个异步操作调用其完成处理程序。如果你选择用同步的方式来创建你的应用,你则不需要考虑我将在这一节向你展示的东西。 你有多种不同的方式来使用io_service。在下面的例子中,我们有3个异步操作,2个原创 2017-10-27 09:00:25 · 317 阅读 · 1 评论 -
服务端中的异步IO
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #原创 2017-11-07 09:00:32 · 326 阅读 · 0 评论 -
套接字缓冲区 boost asio
当从一个套接字读写内容时,你需要一个缓冲区,用来保存读取和写入的数据。缓冲区内存的有效时间必须比I/O操作的时间要长;你需要保证它们在I/O操作结束之前不被释放。 对于同步操作来说,这很容易;当然,这个缓冲区在receive和send时都存在。char buff[512];...sock.receive(buffer(buff));strcpy(buff, "ok\n");sock原创 2017-10-30 09:29:04 · 1294 阅读 · 0 评论 -
run(),run_one(), poll(), poll_one() 方法
我在之前说过异步方法的handler是在调用了io_service::run的线程里被调用的。因为在至少90%〜95%的时候,这是你唯一要用到的方法,所以我就把它说得简单了。对于调用了run_one(), poll()或者poll_one()的线程这一点也是适用的。run_one()方法最多执行和分发一个异步操作:如果没有等待的操作,方法立即返回0如果有等待操作,方法在第一个操作执行之前处于阻原创 2017-10-30 10:47:56 · 1887 阅读 · 2 评论 -
同步服务端
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #原创 2017-11-01 13:44:03 · 220 阅读 · 0 评论 -
谈谈Boost网络编程(3)—— 一些坑
版权声明:本文为博主原创文章,未经博主允许不得转载。 很多时候,我们以为采用了一种新技术(尤其是成熟的技术),过程应该是一马平川的。然而实际上,采用新技术的过程却是掉入了各种坑里。究其原因,或者是使用方式有问题,或者是效率的白白浪费。这一章,我想讲讲,我在使用Boost Asio进程网络编程时,所遇到的各种坑。 其一、CPU占用100%问题。转载 2017-10-15 17:55:17 · 926 阅读 · 0 评论 -
同步客户端 boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #ifde原创 2017-11-01 10:42:21 · 301 阅读 · 0 评论 -
异步客户端 boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #incl原创 2017-10-31 14:41:16 · 413 阅读 · 0 评论 -
一个简单的高并发的回应服务器(5万并发)
跨平台代码https://github.com/wojiaoguowei/boost_test 大部分代码是转载,我在调试中查了资料参考:http://blog.csdn.net/guanyijun123/article/details/42490377#quote http://blog.csdn.net/zhylei/article/details/8...转载 2017-10-31 10:42:40 · 7724 阅读 · 0 评论 -
异步服务端中的多线程 boost asio
// gogogo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#ifdef WIN32#define _WIN32_WINNT 0x0501#include #endif#include #include #原创 2017-11-08 09:56:34 · 1499 阅读 · 0 评论 -
Boost.Asio 异步执行方法,post()\dispach()\wrap().
Asio中的异步操作不仅包括 异步的客户端服务端的连接和异步的数据读写,还包括很多可以异步执行的操作。 Asio中有三种方式异步执行你指定的方法:post()、dispach()、wrap()。post()这个方法能立即返回,并且请求一个io_service实例调用制定的函数操作(function handler),之后会在某一个盗用io_service.run()的线程中执行。dis转载 2017-10-30 14:50:08 · 1305 阅读 · 0 评论