memory barrier和CAS那套从computer architecture学来的低级同步工具和cache可见性之类的怎么和上层的mutex融会贯通是个问题……在这个地方总会头疼什么是对的,平时写事件模型的单线程并发多所以无视这些东西也不会出什么bug,但是就是一直没懂到底什么时候上memory order会是问题。
@kiririn 最近看了看好像其实没啥关系,用上mutex就已经保证序列化了,同时C++的mutex语义是保证持锁段内的修改一定会对下一个拿到锁的线程可见的,Java的synchonized也有完全一样的happened before关系。平时读写不加锁就相当于玩火换去ARM就可能炸了。那套低级同步工具其实是lock free programming用的,在C++里的代表就是atomic<T>那套工具,但是那个也确实难,写个新数据结构都能发篇paper。
The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!