<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
  <channel>
    <title><![CDATA[火星超人de飞碟]]></title> 
    <link>http://chaoren.muroom.com/</link> 
    <description><![CDATA[我是火星来的超人]]></description> 
    <language>zh-cn</language> 
    <copyright><![CDATA[Copyright 2010, 火星超人de飞碟]]></copyright> 
    <webMaster><![CDATA[xl224maya@tom.com (火星来的超人)]]></webMaster> 
    <generator>LBS v2.0.290</generator> 
    <pubDate>Mo, 06 Sep 2010 18:24:00 -0800</pubDate> 
    <ttl>60</ttl>
  
    <item>
      <title><![CDATA[Lua Interface 的多核bug]]></title> 
      <link><![CDATA[http://chaoren.muroom.com/article.asp?id=268]]></link> 
      <category><![CDATA[游戏架构]]></category> 
      <author><![CDATA[Maya <null@null.com>]]></author> 
      <pubDate>Tu, 04 Nov 2008 23:25:41 -0800</pubDate> 
      <description><![CDATA[<b> bug阿bug。。。</b><br /><br />      差不多去年年底的样子开始接触lua，主要都是在.net平台，所以看上了luainterface，使用也很方便，源码什么的都开放，近期在家里的双志强机器上跑程序发现活存在访问非法内存的问题，网上查之说是多核的一个bug，但是只有编译好的版本，并没有源码，还是想看看到底是什么原因造成的，也方便以后在对现有自己手上的版本做修正。<br /><br />      在luainterface的站点上看到几个解决方案，目前luainterface版本树上的应该已经修正了这个问题，不过作者引入了一个LuaBase的类，luaTable和LuaFunction都继承了LuaBase，然后在LuaBase里面写了关于析构的处理，我又不是很想把目前再用的版本替换成现在的版本树，毕竟不是release的。。。所以代码单独取出。<div class="code">~LuaTable() <br />{<br />&nbsp;Dispose(false);<br />}<br />public void Dispose()<br />{<br />&nbsp;Dispose(true);<br />&nbsp;GC.SuppressFinalize(this);<br />}<br /><br />public virtual void Dispose(bool disposeManagedResources)<br />{<br />&nbsp;if (!this.disposed)<br />&nbsp;{<br />&nbsp;if (disposeManagedResources)<br />&nbsp;{<br />&nbsp;interpreter.dispose(reference);<br />&nbsp;}<br />&nbsp;disposed = true;<br />&nbsp;}<br />} </div><br />以上，在双C机器上跑了一天测试程序，没有在发现内存访问错误的问题。]]></description>
      <wfw:commentRss><![CDATA[http://chaoren.muroom.com/feed.asp?q=comment&id=268]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[关于Fluegelvon中引入的事件驱动]]></title> 
      <link><![CDATA[http://chaoren.muroom.com/article.asp?id=257]]></link> 
      <category><![CDATA[游戏架构]]></category> 
      <author><![CDATA[Maya <null@null.com>]]></author> 
      <pubDate>Sa, 19 Apr 2008 22:44:46 -0800</pubDate> 
      <description><![CDATA[最近重新看了下Fluegelvon以前的实现，因为基础的底层代码已经是在一年半以前完成的了，所以整个体系架构上有太多的不完善，前段时间引入了消息队列来更好的控制控制系统内部的消息通讯。因为重新看了底层的实现，因为有两条主要的消息处理线程，都是while(isRun){...}这种方式来实现的，总觉得很别扭，虽然很多服务器端系统在设计的时候基本上都这么用，起码看到过的都是这样。总感觉不好。。。<br /><br />最近忽然想起来在一年半以前开始设计Fluegelvon整个结构的时候，曾经想过整个系统使用事件来驱动整体的运作，每一个外围的模块最终都注册到整个事件驱动内部来统一调度，因为一年多的事件大部分时间都在调优整个系统的通讯模型，所以这一块就一直没有管，想法也就这么放下了。最近正好底层的模型基本上都已经完成的差不多了，开始调整脚本类的内容，所以决定重新拾起这个“事件驱动”模型。<br /><br />其实说起来这个模型本身也是很简单的一个结构，运作机制是Timer+Event，Timer提供了类似while(isRun){...}这种结构，Event提供了一个触发的机制。这样一个完整的运行模式就出现了。首先系统在启动时开启一个Timer按照一定的频率唤醒（比如10Hz），当这个Timer唤醒以后会马上触发所有等待执行的事件，这些等待事件都存储在EventList当中，实际上这个事件列表只记录在Timer沉睡的这段时间里面系统都触发了那些事件。<br /><br />以上只是一个很混乱的思维的总结，目前还没有构思出一个很完整的实现，暂时的想法是在Timer当中注册所有的事件，然后每一次唤醒都检查事件是否需要激活，但是又考虑到效率的问题。还要继续的思考如何实现，继续修改腹稿。。。]]></description>
      <wfw:commentRss><![CDATA[http://chaoren.muroom.com/feed.asp?q=comment&id=257]]></wfw:commentRss>
    </item>
      
  </channel>
</rss>
