开发者社区> 问答> 正文

如下的////while语句分别是什么意思

如下后面//////////////
while(DSI_REG->DSI_INTSTA.BUSY); ////////////////
......
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,1);
while(DSI_REG->DSI_INTSTA.CMD_DONE == 0);//////////////////
OUTREGBIT(DSI_INT_STATUS_REG,DSI_REG->DSI_INTSTA,CMD_DONE,0);

展开
收起
a123456678 2016-03-23 14:27:50 2101 0
1 条回答
写回答
取消 提交回答
  • DSI_REG->DSI_INTSTA.BUSY
    DSI_REG是某个类指针或结构体指针,这显然是个共享资源,其他地方也在操作这个指针,所以这个指针内部的成员有可能被改变。
    DSI_INTSTA是这个指针的一个成员变量,这个成语变量同样是结构体或类
    BUSY是DSI_INTSTA的成员变量。
    那个循环的意思很简单,就是只要这个BUSY不为假,就永远循环下去,即你的程序会卡在那不动。
    另外我上面也提到DSI_REG是某个共享资源,其他线程可能也会改变其内部值。所以某个时刻其他线程改了BUSY,使其为假,就跳出while,程序继续执行了。
    换句话说你这while意思就是只要忙,那就得等着,不忙,继续~
    下面那个while一个作用~

    2019-07-17 19:11:00
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载