queue test - woodelf-treetop/rcwiki GitHub Wiki
1、C#的lock(AA),不会lock住AA的内存,假如一个线程lock(AA),另一个线程是可以随便改AA的;因此,我lock(Queue)跟随便lock个啥,是同样效果。(但是应当尽量避免锁定public类型,最好是锁定私有只读的变量)
2、C#的Queue,测试结果如下:
1) 一个线程进一个线程出,是可以线程安全的,不加锁都没关系,在Log中观察到了进出交替进行;
2) 两个线程一起进,才会出错;
3) 两个进程一起出,也会出错;
4) “出”包括Dequeue和Clear,难以置信Clear竟然跟Enqueue木有冲突
(可能的冲突原因,假想:A线程判断队列有内容,可以执行Dequeue,此时B线程完成Clear,然后A线程执行Dequeue时,已经没有内容)
3、无锁情况下,执行效率确实要高一些,以后有机会应考虑对ConcurrentQueue的效率进行测试
4、Queue.Synchronized 似乎不能用于泛型