线程的同步与互斥
在上一篇博客中我曾经提到,在Linux下多线程是共享数据的,但是共享数据可能会发生访问的冲突。比如两个线程都要把某个全局变量增加1,这个操作一般需要三条指令完成:
①从内存读变量值到寄存器
②寄存器的值加1
③将寄存器的值写回内存
假设两个线程在多处理器平台下同时执行者三条指令,很有可能会导致变量只加了一次而不是两次。
我们测试一下:
创建两个线程,各自将count增加5000次,正常情况下count的值应该是10000,但是事实上却是每一次的运行结果都不一定一样,有时比5000多,有时可能都到6000。
运行后的结果是
由此可见,对于多线程的访问,这里冲突了。
互斥: