关于经典的读者,写者问题

BABIZHU 2002-04-28 11:36:36
关于这个问题,再windows核心编程上,作者提供了一个类CSWMRG,问题在于,他不能很好的解决,读为空的情况

一般情况下,负责读数据的县城都是读到数据后要做一些相应处理,如果独到的数据为空,很明显,就应该不作相应处理

不知道大家又没有什么更好的解决方案,

当然最简单的是测试一下是否为空,如果不为空,继续循环,不过我不认为那样是最优秀的解法,理想情况下,如果为空的话,他就不应该在请求读,直到有数据为之

这个问题比较有代表性,还请高手畅所欲言!!!
...全文
102 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazy_lazy_pig 2002-04-30
  • 打赏
  • 举报
回复
这回是我不明白了,为什么用了while 效率就会低呢?难道有什么办法可以不去循环处理所有的情况?我想只要处理大批相似的情况,就需要循环的,不然怎么做呢?难道有代替循环的算法吗?
BABIZHU 2002-04-29
  • 打赏
  • 举报
回复
嗬嗬,楼上的朋友不要急,如果用while加if来做,这肯定是效率最低的做法,
crazy_lazy_pig 2002-04-29
  • 打赏
  • 举报
回复
你怎么就是不开窍呢,我不是说了吗,不管你用什么办法,在xx不为空时cpu不做判断是不可能的,这是矛盾的两方面,不可能一方脱离另一方单独存在,你思来量去应用各种方法,无非是以增加代码长度、增加系统处理时间为代价,不仅没使cpu减少工作,又为今后的维护带来了不必要的麻烦,得不偿失啊
BABIZHU 2002-04-29
  • 打赏
  • 举报
回复
不太明白!!!我认为应该用系统提供的一些同步对象,而不应该用if家循环来判断,,关键就在于如何用好这些同步对象,最好能又有一个比较经典的解法


另外我发现,这个问题也许改为生产-消费者问题更为恰当
白驼山宋兵甲 2002-04-28
  • 打赏
  • 举报
回复
可以写一个异常处理
BABIZHU 2002-04-28
  • 打赏
  • 举报
回复
不是不作判断,而是不要通过,if(xx="")的这种方式判断,很显然,如果xx==""那么它就不进行处理而进行下一次的判断,这样,cpu就一直在判断xx是否等于“”,一直没有闲着
crazy_lazy_pig 2002-04-28
  • 打赏
  • 举报
回复
这似乎没什么嘛,以我个人之遇见,是否为空的判断是必不可少的,就算是人做事情也必须做这样一个判断,只是判断时间及少以至于被你的感官忽略了而已。计算机又不比人聪明,他怎么能不做判断就直接跳过呢?
BABIZHU 2002-04-28
  • 打赏
  • 举报
回复
我考,如此经典的问题,居然无人问津???
crazy_lazy_pig 2002-04-28
  • 打赏
  • 举报
回复
cpu当然要一直判断xx是否为空,只要xx可能出现这种问题,我前面讲的人的工作实际上也需要这样一直判断,只是你没感觉到罢了。babizhu(巴比猪)讲的异常处理看起来好象是xx不空是没做什么判断,那只是判断被隐藏了,实际上没减少任何判断,异常机制只是在代码维护上有了很大的好处。
附:异常处理方法:
... ...
try
{
//可能出现xx为空的语段
... ...
... ...
}
catch(YourExceptionClass* ExClass)
{
//处理异常的代码
... ...
}

/////////另外的代码,出现异常的代码,可以是其他函数内或类内部//////
{
... ...
... ...
if(xx=="")
throw ExClass;//ExClass is your own class that indicate the
//exceptoin
... ...
}

BABIZHU 2002-04-28
  • 打赏
  • 举报
回复
推出??拿什么时候又进入呢????
mldnking 2002-04-28
  • 打赏
  • 举报
回复
你加一个循环,空了多常时间没反映你就退出别
BABIZHU 2002-04-28
  • 打赏
  • 举报
回复
异常处理??怎么做,这个很新鲜

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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