因为是链表,我认为写线程的追加操作只会改变最后一个节点,所以我在读线程中只是读取前size()-1个节点,这样是不是可以?ps:不想用锁主要因为读线程中需要大量的读取和比较,很耗时,而写线程只是追加一个节点。

解决方案 »

  1.   

    楼主可以弄俩list,一个用于写,一个用于读。读完之后,交换两个list。只需交换时候用下锁
      

  2.   

    肯定要加锁啊!
    你sizeof一个空的list,看看有多大。
    我在ubuntu下是16字节,说明它是有成员的,你怎么知道你从后面添加一个数据,不会影响到成员变量呢,或者从前面删除一个数据不会影响到成员变量呢?事实上,链表内部存储有两种,一种是带一个表示链表当前大小的成员,一种不带,这两种存储代表了两种设计理念,但已经与本题无关了,你做了太多的假设,所以你觉得不用加锁,这些假设都是有问题的。