摘要:
多处理器使用松散的内存模型可能会非常混乱,写操作可能会无序,读操作可能会返回不是我们想要的值,为了解决这些问题,我们需要使用内存栅栏(memory fences),或者说内存屏障(memory barrier)。 X86平台可能还算是使用松散内存模型的多处理器中还算比较好的了,它针对内存顺序有... 阅读全文
摘要:
在进行多线程编程的时候,需要对共享数据,或者说竞争数据进行上锁,通常我们都是使用操作系统提供的数据结构和接口,比如linux下的mutex结构。使用现成的锁结构能满足绝大多数的需求,不过针对一些特殊情况,可能需要自己实现锁,比如想检测程序中是否发生了死锁。 本文主要针对TAS这种锁的方式进行讨... 阅读全文