﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-GameDevBoy</title><link>http://www.cppblog.com/gamedevboy/</link><description>游戏窝</description><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 21:35:17 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 21:35:17 GMT</pubDate><ttl>60</ttl><item><title>开始写博客了，今天先从一个宕机说起。。。</title><link>http://www.cppblog.com/gamedevboy/archive/2010/01/25/106422.html</link><dc:creator>gamedevboy</dc:creator><author>gamedevboy</author><pubDate>Mon, 25 Jan 2010 13:56:00 GMT</pubDate><guid>http://www.cppblog.com/gamedevboy/archive/2010/01/25/106422.html</guid><wfw:comment>http://www.cppblog.com/gamedevboy/comments/106422.html</wfw:comment><comments>http://www.cppblog.com/gamedevboy/archive/2010/01/25/106422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gamedevboy/comments/commentRss/106422.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gamedevboy/services/trackbacks/106422.html</trackback:ping><description><![CDATA[<p>嗯，好不容易，CPPBLOG开通了。今天先写点什么。<br>随便写的东西吧，先说说今天遇到的一个宕机BUG吧。<br>公司项目用的引擎是从TORQUE引擎上拓展增强的一个版本，大量利用的TORQUE原本带的一些基础库，函数等等<br>其中网络方面有一个比较重要的类BitStream，它可以按位进行序列化反序列化操作。功能比较强大，故在其他几个工程文件中<br>都有引用，但是今天服务器突然出现了一个宕机BUG，在反序列化的时候出现了问题。这个BUG在两周内只出现过两次，开始<br>没有重视，今天决定好好查一下。<br><br>因为是序列化的问题，所以首先想到的是有可能序列化和非序列化不匹配，可以查了一圈下来，并没有什么问题。<br>后来想到因为BUG在两周内才出现了两次，才想到有可能是多线程出的问题，后来仔细查看了一下BitStream::readString这个方法<br>原来这个类为了更有效的传递字符串，采用了HUFFMAN压缩，而这个辅助类居然是一个静态变量。这下明白了，就是这个静态变量<br>惹得祸。<br><br>另外提一下，TORQUE一直是按单线程设计的引擎，搬到多线程环境下一定要好好检查一下，没准什么地方一不小心就能到地雷。<br>另，如果大家在设计程序的时候也遇到多线程静态变量的问题，可以把变量声明为TLS，这样可以一劳永逸，但是大家小心使用。<br>PS：具体TLS去查MSDN</p>
<img src ="http://www.cppblog.com/gamedevboy/aggbug/106422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gamedevboy/" target="_blank">gamedevboy</a> 2010-01-25 21:56 <a href="http://www.cppblog.com/gamedevboy/archive/2010/01/25/106422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>