2012年8月9日

摘要: 多线程能够很方便的访问同一个数据。但是当多个线程同时修改数据的时候会发生意想不到的情况。线程同步就是为了在多个线程间同步数据,一次只能让一个线程修改数据。首先介绍3个在线程同步中容易忽略的地方。1.赋值语言不一定是原子性的。32位的系统cpu一次读取32位的字节。但是如果一个int32没有内存对其的话就需要读取两次如这个赋值语句int32 x=0x12345678;另外一个线程读取x可能读取到x=0x12340000。这个赋值语句不是原子性的。2.因为编译器的优化,很多代码不是我们的预期。一个是:代码的顺序可能更改。(给数据加上isdirty的优化,顺序很重要)二个是:内存的数据优化保存到寄存 阅读全文
posted @ 2012-08-09 14:48 lawnight 阅读(438) 评论(0) 推荐(0)

导航