golang--- 32位系统下atomic.AddUint64导致程序崩溃及解决办法
http://www.baidu.com/link?url=qb02vICS8NhIztRZ1n7wWHiJ6bDGFeIKQQQfr0w0BShbImeG_EuBkDGEiGzYUF44vQUB6lk_6z11UVP4fcDtonzmlvY0LM6fy-t-Yu6bDIa
发表于1小时前(2014-02-12 10:44)
阅读(7)|评论( 0) 0人收藏此文章, 赞0 packagemain import( "sync/atomic" "unsafe" ) typeastruct{ xunsafe.Pointer yuint64 } funcmain(){ p:=new(a) atomic.AddUint64(&p.y,1) } 在32位计算机上运行改程序,会出现错误:
查了资料具体原因如下:
其大意是:
的办法有两种: 1,修改uint64字段在struct 的位置确保字段地址出现在8字节的边界; 2,修改使用sync.RWMutex来实现互斥,如下 mutex.Lock() uint64+=1 mutex.Unlock() 建议使用办法2来彻底解决问题
除非注明,本站文章均为原创或编译,转载请注明: 文章来自
KENGINE | Kankanews.com
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |