Brew 中如何做到死循环?? 高手帮忙!!

keane83 2008-11-18 12:56:05
若想实现死循环。
for(;;);
这样应该是不oK的吧。是不是CPU占用率会100%(不知道那个看门狗会不会出来)。所以我想在循环中sleep一下。
好像Brew中还没这种接口。
大家帮想想办法?????
...全文
298 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hw324306893 2011-03-02
  • 打赏
  • 举报
回复
设Timer,for(;;)、while(1)什么的,就等死机吧
hanwldiyi 2011-01-02
  • 打赏
  • 举报
回复
3楼正解
「已注销」 2011-01-02
  • 打赏
  • 举报
回复
clk_busy_wait
iBug168 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fenger8293 的回复:]

死循环会让手机栈溢出而重启的。我曾经封装DGBPRINTF的时候,不小心替换错了,造成无限递归,而且还是写的开机运行程序,导致手机一直开不了机,最后删了程序才起来。
[/Quote]

所谓的死循环跟无限递归是两码事, 无限递归是不停的进栈...理论上来说不管是什么平台什么系统都会导致栈溢出, 而死循环是一直使用cpu, 主流的操作系统中"进程的实现"基本都是一个无限循环,当"应用"退出的时候跳出.

由于brew是单线程的,所以无限循环的设计基本上只能依赖于Timer,因为一但有死循环,其他的app将无法得到正常的调用.
deonzhang 2010-12-02
  • 打赏
  • 举报
回复
学习了
wyx314985 2010-11-20
  • 打赏
  • 举报
回复
直接使用3楼的方法就行了,将UI挂起一段时间,等待收到定时器信号量即可

但是需要注意一点,高通本身在SLEEP时会关闭所有定时器(协议的除外),这可能导致较大的延迟。

for(;;)这样肯定是不行的,REX本身是抢占式操作系统,这种写法是将单个线程挂起,对于其他线程来说依然可以运行,最后直接导致WDOG超时异常(1分钟之后)
手指风 2010-11-02
  • 打赏
  • 举报
回复
死循环会让手机栈溢出而重启的。我曾经封装DGBPRINTF的时候,不小心替换错了,造成无限递归,而且还是写的开机运行程序,导致手机一直开不了机,最后删了程序才起来。
blade_tail 2010-10-30
  • 打赏
  • 举报
回复
使用IThread接口,在Thread的实现start函数里实现死循环。
路飞-总裁 2010-10-09
  • 打赏
  • 举报
回复
3楼正解。
strayedbird 2010-10-09
  • 打赏
  • 举报
回复
BREW 的IThread接口可以实现类死循环但又能够让出cpu的设计。
Scripts_cn 2010-10-07
  • 打赏
  • 举报
回复
这样岂不搞死机了。。。
instantboy 2010-09-28
  • 打赏
  • 举报
回复
3楼真有意思。
lz可以使用MSLEEP,但是需要你在mif中勾选system权限才能用
malu_1982 2008-12-12
  • 打赏
  • 举报
回复
int fun()
{
ISHELL_SetTimer(pShell, WAIT_TIME, fun);
}

这个应该可以吧。
malu_1982 2008-12-12
  • 打赏
  • 举报
回复
ISHELL_SetTimer();
飞哥 2008-11-25
  • 打赏
  • 举报
回复
rex_wait(time);
这个不知道行不行

765

社区成员

发帖
与我相关
我的任务
社区描述
为移动开发者提供丰富的解决方案、全面的技术下载。本版以游戏、多媒体、高效能等三个技术为核心,为开发者营造一个轻松、高效的学习交流平台。
社区管理员
  • Qualcomm开发
  • 霍大神
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧