记一次线程不同步的坑

memcpy_Image.png

这段简单的代码, 总是在某些时候, 就会出现p_cur_ctx->GetCallbackContent()不为空, 但是总是memcpy失败的问题. 这下无语了, 系统库有问题了吗 ?! WTF, 遇见鬼了, 从来没有见过如此诡异的问题.

gdb p_cur_ctx->GetCallbackContent()
gdb tmp

怎么看, 这都是不可能发生的事情!!!, 为什么memcpy会失败呢?

再看GetCallbackContent()的代码实现

GetCallbackContent实现

感觉上没有什么问题, 这个问题就诡异了.为什么以前程序跑的好好的, 突然间连memcpy都不靠谱了.这个世界是怎么了.

坐下来仔细想想, 发现这个原来是自己设计框架时候留下的.

当时设计的线程安全的单例模式, 然后也没有仔细考虑两个线程的同步的问题, 是粗心了.

修改后的程序


Paste_Image.png

再也没有出现这个问题. 哎, 到处都是坑.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容