新足迹

 找回密码
 注册

精华好帖回顾

· 大头怀念的北京小吃(十一)-- 稻香村的牛舌饼 (2012-11-20) datou2z · 征文活动: 留学生的滞留地: 克雷顿(MEL CLAYTON) (2010-9-13) 太有才了
· 酱酱相传——甜美微酸的法式草莓塔 Strawberry Garden (2011-6-3) feicunzic · 上海夏天 (2010-5-15) xblues
Advertisement
Advertisement
楼主:zn7726

我一定是渣, 虚心向程序员帝们请教, 开发中如果避免使用debugger -- 请KA娃和yuba务必发言 [复制链接]

发表于 2010-10-20 10:09 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
关于race condition的书很多,不过wiki这个介绍虽然讲得简单,还是值得看看的

http://en.wikipedia.org/wiki/Race_condition

评分

参与人数 1积分 +1 收起 理由
kawara + 1 race condition和live lock不是一回事 ...

查看全部评分

Advertisement
Advertisement

发表于 2010-10-20 10:13 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 小马识途 于 2010-10-20 10:59 发表
livelock 不就属于concurrency问题吗?


我不是那意思, 我是看大家都在谈多线程, 并行处理, 如何从底层来操作和分配cpu和内存, 人家的意思是底层编码直接使用和分配os的资源, 怕楼歪了.

2010年度奖章获得者

发表于 2010-10-20 10:19 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
這個樓早就歪的不成樣子了 :)
头像被屏蔽

禁止发言

发表于 2010-10-20 10:25 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-10-20 11:19 发表
這個樓早就歪的不成樣子了 :)


不是歪,是依山而建
签名被屏蔽

发表于 2010-10-20 10:49 |显示全部楼层
此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 Dan.and.Andy 于 2010-10-20 11:13 发表


我不是那意思, 我是看大家都在谈多线程, 并行处理, 如何从底层来操作和分配cpu和内存, 人家的意思是底层编码直接使用和分配os的资源, 怕楼歪了.

呵呵,不好意思,俺也是顺势就继续歪楼了。

刚刚又想到一个livelock的例子,厕所门口,一人要出,一人要进,先互相让,然后互相抢,一直循环,这个俺是有亲身经历的

评分

参与人数 1积分 +2 收起 理由
y12345678 + 2 最后呢?

查看全部评分

发表于 2010-10-20 10:50 |显示全部楼层
此文章由 老蒋 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 老蒋 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Livelock sample code in Java :

public class Beauty {

        private Geek boyfriend;
        private final Lock lock = new ReentrantLock();

        boolean swapBF(Beauty other) {
                if (this == other) return true;
                while (true) {
                        try {
                                lock.lockInterruptibly();
                                try {
                                        if (other.lock.tryLock()) {
                                                try {
                                                        Geek tmp = boyfriend;
                                                        boyfriend = other.boyfriend;
                                                        other.boyfriend = tmp;
                                                        return true;
                                                } finally {
                                                        other.lock.unlock();
                                                }
                                        }
                                } finally {
                                        lock.unlock();
                                }
                                Thread.sleep(100);
                        } catch (InterruptedException e) {
                                Thread.currentThread().interrupt();
                                return false;
                        }
                }
        }
}

The solution is to introduce randomness into the retry mechanism.

评分

参与人数 1积分 +5 收起 理由
kawara + 5 我很赞同

查看全部评分

Advertisement
Advertisement

发表于 2010-10-20 11:00 |显示全部楼层

回复 126# 的帖子

此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这行lock.lockInterruptibly();
是不是应该放进第二层的try block?

用swapBF做method名字是不是太邪恶了

发表于 2010-10-20 11:50 |显示全部楼层

回复 127# 的帖子

此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我觉得这样挺好的,如果只用一套try,代码会messy,尤其是那个finally block

发表于 2010-10-20 11:53 |显示全部楼层

回复 128# 的帖子

此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这样第一个lock在运行一次后没有释放,不是变成dead lock了吗?

发表于 2010-10-20 12:13 |显示全部楼层
此文章由 zn7726 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zn7726 所有!转贴必须注明作者、出处和本声明,并保持内容完整
這個樓早就歪的不成樣子了

已经成比武大会了. 我早就插不上嘴了

发表于 2010-10-20 12:15 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 小马识途 于 2010-10-20 12:53 发表
这样第一个lock在运行一次后没有释放,不是变成dead lock了吗?

不会不释放的,或者走finally,或者被interupt自然释放。
Advertisement
Advertisement

发表于 2010-10-20 12:22 |显示全部楼层

回复 131# 的帖子

此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
更正一下, 是俺搞错了

[ 本帖最后由 小马识途 于 2010-10-20 13:24 编辑 ]

发表于 2010-10-20 18:08 |显示全部楼层
此文章由 kawara 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kawara 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2010-10-20 10:21 发表
这帖技术含量好高

呵呵,他们给了你10000分?

发表于 2010-10-20 19:27 |显示全部楼层
此文章由 iceman 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 iceman 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 PotatoChips 于 2010-10-19 15:22 发表
实际上如果对开发的系统很熟,大部分代码都会是copy&paste的,这样会减少bug,但谁要是自己用手来敲代码,还不用debugger,我只能说他是非人类了

我的头经常告诫我,copy&paste does not make any value!
  Future belongs to those who believe in the beauty of their Dreams.

发表于 2010-10-20 19:33 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bulaohu 于 2010-10-20 11:09 发表 [url=http://www.oursteps.com.au/bbs/redirect.php?goto=findpost&pid=4744403&ptid=278073]

kawara 积分 +1 race condition和live lock不是一回事 ... 2010-10-20 11:56



I was responding to post #118.

评分

参与人数 1积分 +2 收起 理由
kawara + 2 哦,他那个使race condition

查看全部评分

发表于 2010-10-20 20:31 |显示全部楼层
此文章由 小马识途 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 小马识途 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 bulaohu 于 2010-10-20 20:33 发表



I was responding to post #118.

kawara 积分 +2  哦,他那个使race condition 2010-10-20 20:34


嘿嘿,K哥还真能侃
Advertisement
Advertisement

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部