boost库在工作(26)网络客户端之一

说到网络,就立即回想到1997年那时,上网只是为了收发一下EMAIL,没有别的事情可做,并且大多数还是连接成局部网的情况。在局部网时,在一个计算机房里,最多只有10多台电脑联机,这样的局部网只能干一件事情,就是玩多人网络游戏,这个多人只支持4个人一起玩。随着时间推进,到1999年时就可以上网看新闻和使用QQ了,这时网络主要用来聊天,玩游戏的机会不多,做别的事情也不行,因为网络的速度很慢。到了200...
阅读(3062) 评论(0)

boost库在工作(25)任务之五

在前面的例子里使用了一个精度只能到秒级别的定时器,对于一般应用来说,已经卓卓有余,能对付大多数的情况了。但有一天,老板让你开发一个对时间精度能到毫秒级别的定时器,就显得力不从心,左思右想不得其解。假如在嵌入式系统里,往往可以直接操作定时器来实现,但在PC系统里,就不能直接操作硬件了,更何况操作系统还存在进程调度的中断,因此定时器的精度就大大打折扣。在boost库里提供了boost::asio::h...
阅读(4562) 评论(2)

boost库在工作(24)任务之四

在软件开发里,经常会遇到这样的情况,比如客户让我们开发的软件要求每隔半小时,就要备份一次数据,以便避免数据丢失。又比如在开发一个游戏网络服务器时,需要不断检查客户端连接上来的数据连接是否还有效,这时也需要使用一个任务来检查客户端的连接是否还有心跳包过来,如果没有心跳包,就可以把这个连接断开,释放相关的资源,避免服务器的资源永远占用,导致服务器运行时间长了就会死机。面对这些情况,在有界面的情况下,往...
阅读(3136) 评论(0)

boost库在工作(23)任务之三

在前面的多任务执行里,因为有多个线程执行,只要放到任务队列里的任务都会执行,但这些任务执行顺序是随机的,没有固定的顺序,也就是说放入队列早的任务不一定就是早执行,放入队列迟的任务也不一定后执行。这样没有顺序的执行性是多线程的本来特性,虽然可以使用锁对象来同步一个对象不被多个线程同时访问,但它是没有办法确保任务之间的有序访问同一个资源。这时,就需要引入一个对象io_service::strand,有...
阅读(5506) 评论(9)
    个人资料
    • 访问:5594036次
    • 积分:73134
    • 等级:
    • 排名:第25名
    • 原创:1587篇
    • 转载:61篇
    • 译文:11篇
    • 评论:2086条
    文章存档
    最新评论