2013年10月12日

编译问题:undefined reference to `MyInitBitMap'

摘要: 这个问题老生长谈了,是因为程序连接阶段找不到函数的定义引起的。不过今天要说的情况是在某个特殊的情况下引发的,倒是花了作者不少的时间去定位问题。之前的版本被引用的程序代码sync_group.c是C文件,而引用文件为CPP文件,所以在CPP文件中要通过如下方式,来引用C文件中的函数。 1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 #include "loginshm.h" 5 #include "IpShm.h" 6 #include "common.h" 7 #inc 阅读全文

posted @ 2013-10-12 15:13 netbar 阅读(399) 评论(0) 推荐(0) 编辑

2013年9月23日

memcache之CAS实现全局同步锁

摘要: 在项目过程中,需要一个全局的锁。在原本的项目中往往是通过锁数据库的表来实现的。在高并发的需求下,我们往往要需要对非常多的表进行加锁。加锁的表越少,锁资源越少,竞争越严重。不过好在mysql数据还提供了一种不需要表的加锁方式。加锁:"SELECT GET_LOCK('{$key}', {$timeout}) AS get_lock";解锁:"SELECT RELEASE_LOCK('{$key}') AS release_lock";这次打算换个方式。其实一开始有想到两种方式。1)zookeeper的锁服务zookeeper 阅读全文

posted @ 2013-09-23 11:16 netbar 阅读(1357) 评论(0) 推荐(1) 编辑

2013年9月22日

头文件引起的bug

摘要: 理下关系,重现下问题。1)通用结构体struct stCom定义在common.h中,生成common.a。2)修改结构体定义。(修改结构体中某一个数据的长度)3)client.cpp 引用了修改之后的头文件common.h,并且编译静态链接common.a.结果,client.cpp和common.a中对结构体struct stCom的定义是不一致的,出现了数据错乱的问题。这个问题不常见,主要是因为版本控制做的不到位引起的。用gdb很容易看出来 ,结构体的内存布局在不同上下文中的区别。 阅读全文

posted @ 2013-09-22 11:11 netbar 阅读(173) 评论(0) 推荐(0) 编辑

导航