首页 新闻 会员 周边 捐助

以下的是一个不断循环添加ConcurrentQueuer的方法,它同时同时被多个线程调用,如何计算添加了多少次

0
悬赏园豆:40 [已关闭问题] 关闭于 2012-08-27 09:41


        /// <summary>
        ///执行写入操作
        /// </summary>
        /// <param name="i"></param>       
        private void m_write()
        {
            threadNum++;
            while (true)
            {              
                queue.Enqueue( string.Concat("当前线程ID:", Thread.CurrentThread.ManagedThreadId, " valuevaluevaluevaluevaluevaluevaluevaluevaluevaluevalue\r\n"));              
                writeNum++;
                Thread.Sleep(100);
            }

        }

      请问:m_write()被N个线程同时调用,用"writeNum++;"来计算添加了多少次queue写法是否正确?,注:不用queue.Count属性计算添加多少次queue,是因为每隔一段时间queue就会被另一个线程TryDequeue(),

阿拼的主页 阿拼 | 初学一级 | 园豆:114
提问于:2012-08-16 16:05
< >
分享
所有回答(2)
0

writeNum是全局变量的话应该是可以的吧    可以计算m_write方法被执行了多少次

┢┦偉 | 园豆:1240 (小虾三级) | 2012-08-17 11:30

不懂,不一定,我做了原子操作之后值就不一样了,不只如何处理才是正确的

支持(0) 反对(0) 阿拼 | 园豆:114 (初学一级) | 2012-08-17 23:16
0

System.Threading.Interlocked.Increment(ref AllReceivedDataCount);

我采用了原子操作

阿拼 | 园豆:114 (初学一级) | 2012-08-27 09:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册