反应器类型的操作

有的时候程序必须依赖第三方库来完成I/O操作,鉴于这种情况,Boost::Asio提供了一个null_buffers 类型可以同时完成读和写操作,null_buffers 直到执行I/O操作的对象就绪才返回。

下面是一个执行非阻塞的读操作的例子

ip::tcp::socket socket(my_io_service);

...

ip::tcp::socket::non_blocking nb(true);

socket.io_control(nb);

...

socket.async_read_some(null_buffers(), read_handler);

...

void read_handler(boost::system::error_code ec)

{

if (!ec)  {

std::vector<char> buf(socket.available());

socket.read_some(buffer(buf));

}

}

这些操作支持任意平台上的socket。

时间: 2024-10-18 14:22:20

反应器类型的操作的相关文章

一:redis 的string类型相关操作

*redis客户端中的使用: =============一种:string类型的方法================ 介绍:string是redis的最简单类型,一个key对应一个value,string类型是二进制安全的. redis的string可以包含任何数据,比如jpg图片或者序列化的对象 1:一个key只包含一个value值,当设置相同值时=会覆盖 设置值:set name leyangjun 获取值:get name 2:setnx:(会判断设置的值是否存在,不存在则设置) 设置ke

二:redis 的hash类型相关操作

=====================二种:hash类型================== 介绍:redis -> hash是一个string类型的field和value的映射表 hash特别适合对应存储对象,相较于将对象的每个字段存成单个string类型 将一个对象存储在hash类型中会占用更少的内存,并且可以方便的存取整个对象 0:hset *如果 key(就是hash表) 不存在,一个新的哈希表被创建并进行 HSET 操作 设置hash field为指定值,如果key不存在,则先创建

四:redis的sets类型相关操作(有序和无序集合)

================四五种(有序和无序集合):sets类型(就是集合)============= 一介绍:  set表示集合,添加是是随意添加的----->无序集合 set是集合,它是string类型的无序集合. set是通过hash table实现的,添加,删除和查找的复杂度都是0(1). 对集合我们可以取并集.交集.差集. 通过这写操作我们可以实现sns中的好友推荐和blog的tag功能 1:sadd 向名称key的set中添加元素(唯一的) 例:sadd myset1 one 

三:redis的List类型相关操作

==========================三种:List类型===================== 介绍:list类型及操作 list是一个链接表结果,只要功能是push,pop.获取一个范围的所有值等等, 操作key理解为链表的名字,redis的list类型其实就是一个每个子元素都是string类型的双向链表. 我们可以通过push.pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列 1:lpush: 在key对应list的头部添加字符串元素 (

利用TaskScheduler处理Queue、Stack等类型的操作队列(生产者消费者场景)

我们经常会遇到生产者消费者模式,比如前端各种UI操作事件触发后台逻辑等.在这种典型的应用场景中,我们可能会有4个业务处理逻辑(下文以P代表生产者,C代表消费者): 1. FIFO(先进先出) P产生1,2,3,4,5,6,3,2 C处理顺序应为1,2,3,4,5,6,3,2 2.LIFO(后进先出) P产生1,2,3,4,5,6,3,2 C处理顺序应为2,3,6,5,4,3,2,1 3.Dynamic FIFO(我定义为:去掉相同数据的FIFO, 如果产生的数据队列里已经有相同数据,后进的数据优

对控制器类型“”的操作“”的当前请求

net是目前非常热门的一种程序编译语言,在.net培训中的众多知识点中,对控制器类型“”的操作“”的当前请求是非常重要的一个.下面就由达内的老师为大家介绍一下这方面的内容. 今天在MVC中发现提示以下错误: 对控制器类型“ManageController”的操作“CatalogEdit”的当前请求在下列操作方法之间不明确: 类型 MvcWebPhoto.Controllers.ManageController 的 System.Web.Mvc.ActionResult CatalogEdit()

redis sets类型及操作

sets类型及操作set是集合,它是string类型的无序集合.通过hash table实现,添加.删除.查找的复杂度都是0(1).对集合我们可以实现取交际.差集并集.通过这些操作我们可以实现SNS中的好友推荐和blog的tag(标签)功能 sadd    向集合中添加元素,成功返回1,失败返回0,重复值添加为失败    例如:    sadd myset1 hello smembers    查看集合中的元素    例如:    smembers myset1 scard    查看集合中的元

Redis笔记-String类型及操作(二)

String类型及操作 String是简单的类型 ,一个Key对应一个Value. String类型是二进制安全的. Redis的String可以包含任何数据,比如jpg图片或者序列化的对象 Set 设置Key对应的值为String类型的value 例如:添加一个name=lijie的键值对 127.0.0.1:6379> set name lijie//获取值127.0.0.1:6379> get name//重复赋值,会被覆盖 setnx 设置key对应的值为String类型的value,

hive复杂类型访问操作

复杂类型访问操作1. array类型访问: A[n] 语法: A[n] 操作类型: A为array类型,n为int类型 说明:返回数组A中的第n个变量值.数组的起始下标为0.比如,A是个值为['foo', 'bar']的数组类型,那么A[0]将返回'foo',而A[1]将返回'bar' 举例: hive> create table lxw_test as selectarray("tom","mary","tim") as t from l