基础算法(三) --- 轮询

轮询算法是一个比较耗费CPU资源的方法,因为总要不停的来问才行。在低级IO的时候,往往CPU是等一段时间就查看控制总线是否已经被置为可读可写,其实这就是一个轮询的例子。
为什么要轮询呢,是因为你不知道对方是否已经到了想要的那个状态(比如数据已经就绪)。而你必须要等到那个状态才能继续。所以,要定一个定时器,时间到了,就来查看一些状态。
Example 1:
MTK平台检查SOCKET是否已经连接上。因为Soc_Connect接口是异步非阻塞的,所以一般会直接WOULDBLOCK住,这个时候,要启动一个TIMER,每隔N毫秒就来调用Soc_GetSate来查看是否已经连接到对应的服务器上。如果连接上了,才可以继续做发请求这样的操作。
Example 2:
select函数。应用程序要不停的调用SELECT函数来得到当前SOCKET是否已经可以读写。大家可以百度SELECT的用法,这里不多说了。
因为轮询算法比较耗资源,所以大家往往会想一些替代方案,比如NOTIFY机制。在BREW平台里,对一些异步操作,往往可以注册一个回调函数进去,等就绪了或者有结果了,会直接调回来。这样,应用就只需要傻傻等待就可以啦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值