首页 新闻 会员 周边

线程安全的问题,知道的给说下,谢谢

0
悬赏园豆:10 [已解决问题] 解决于 2013-03-08 12:05

根据线程安全的相关知识,分析一下代码,当调用test方法时i>10时是否会引起死锁?并简单说明理由

        public void test(int i)
        {
            lock (this)
            {
                if (i > 0)
                {
                    i--;
                    test(i);
                }
            }
        }

(有知道的给说下,谢谢)

shuguangFJ的主页 shuguangFJ | 初学一级 | 园豆:77
提问于:2013-03-07 12:10
< >
分享
最佳答案
0

你的问题描述的不够清楚,但是我可以告诉你这段代码不会出现死锁。

原因:只会出现资源竟用的问题,你lock(this){}对于单个线程(如A1)是可以重入的,即进入的线程A1可以无限调用lock(this){}。但是因为lock资源独占的问题,所以在A1没有完全退出lock(this){}块之前别的线程是无法进入lock(this){}临界区的

收获园豆:5
滴答的雨 | 老鸟四级 |园豆:3660 | 2013-03-07 12:37

这问题我看到就这样,没有其他的了,感觉条件不够明确,对Lock,线程也不是太了解,想不明白,所以问问

shuguangFJ | 园豆:77 (初学一级) | 2013-03-07 12:59
滴答的雨 | 园豆:3660 (老鸟四级) | 2013-03-07 13:53

@滴答的雨: 参考下:http://q.cnblogs.com/q/47290/

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-03-08 10:53
其他回答(1)
0

http://www.cnblogs.com/myshell/archive/2010/07/18/1780386.html 参考一下整个人的见解,好像是答案本身就有问题。

收获园豆:5
林J | 园豆:202 (菜鸟二级) | 2013-03-07 17:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册