并发编程
yamanda
有道无术,术尚可求。有术无道,止于术。
展开
-
层次锁
为了避免死锁,可以规定加锁的顺序,因此可以使用层次锁来实现。通过给互斥量封装层次值之一属性,可以确保层次值高的线程可以获得层次值低的锁,反之则不行。简单代码实现如下,可以使用stack来保存已经获得锁的层次值。 class HierarchicalMutex { private: mutex inter_mutex_; unsigned long const level_value_; ...原创 2019-02-20 14:46:09 · 542 阅读 · 0 评论 -
golang channel传递map
好久不上博客了~~~ 最近在研究golang,关于通道中传递不同类型的数据,按理说通道中传递的都是值的副本,对于值类型的数据,比如int、string等接收方的修改不会影响到发送方的数据,但是对于map、channel、切片这些引用类型的数据,修改接收方的值也会修改发送方发送的值。 1、先使用key为string,value为int的map,发现会有影响 2、使用key为string,val...原创 2019-08-24 20:58:05 · 3613 阅读 · 1 评论