Giter Club home page Giter Club logo

Comments (5)

ramsayleung avatar ramsayleung commented on June 17, 2024

我阅读了您的文章《一条经典面试题引发的思考》之后对一些地方有异议

本来我写这篇博文,就是写了一个面试题错误答案之后的分析,主要是排查错误答案的历程,因为这个答案是错误的,所以有异议很正常的

此时i变成了3,线程 B 判断i >= 3,结束循环,线程 B 就有了一个加锁的锁资源未释放。

虽然我没看懂您的描述(为我的理解能力抱歉),我翻看代码,发现24行直接continue的确是有问题的:

    22                  if (index >= 3) {
    23                      // lock.unlock();
    24                      continue;
    25                  }

虽然已经到循环的终结处(其实这里应该用break更好),但是还是有资源出现lock之后没有release
的情况,只是因为循环已经结束,所以才没有暴露没有释放锁的问题.

仓促之下写下的另外一个"解决方案"没想到还是有问题的,真的是让人沮丧呢,anyway, 还是要感谢您的耐心阅读和细心斧正 :-)

from blog.

bwangelme avatar bwangelme commented on June 17, 2024

虽然已经到循环的终结处(其实这里应该用break更好),但是还是有资源出现lock之后没有release
的情况,只是因为循环已经结束,所以才没有暴露没有释放锁的问题.

嗯,我想表达的就是这个意思。我的描述使用了大段文字,有些啰嗦,确实不太好理解。。。 🤣

from blog.

bwangelme avatar bwangelme commented on June 17, 2024

@samrayleung 老哥,忍不住过来吐槽一句。我把我的文章发到 V2 上以后,https://www.v2ex.com/t/552620 经过大家的讨论,才发现你的思路不太对啊。

这是一个同步问题,不是互斥问题,所以应该使用 semaphore/channel 去解决,而不是使用锁 + 自旋的思路解决,我跟着你的文章来写,思路也歪了。 🤣

from blog.

ramsayleung avatar ramsayleung commented on June 17, 2024

情况的确如此,当初解这个面试题只是随手写了个能跑的答案,然后发到v2ex之后就被喷了,基本大家都在喷(无奈摊手脸.jpg)。其实我想表达的意思只是分析一下为什么我写的一个答案有问题: 我的推理思路是怎么样的,涉及到什么Jvm 并发知识,怎么去把问题解决。只是发到v2ex之后,都是在喷我解题方式不对,没有用condition啥的, 我也很无奈,这问题又没规定我用什么工具 (再次无奈摊手脸)。在此小小为自己辩解一番,并向老哥您致歉,着实连累了用golang版本的您了 :-)

from blog.

bwangelme avatar bwangelme commented on June 17, 2024

老哥,“吐槽”只是开个玩笑啦。还是非常感谢你的分享,虽说你分享出来的东西不是完美的(我分享出来的也不是完美的),但是通过你的分享作为一个切入点,不断扩展开来,我还是学到了不少东西。希望你以后能多多分享。

from blog.

Related Issues (3)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.