Chinese In North America(北美华人e网)

注册
发新话题 回复该主题

1#

职场历史故事:Leetcode

占个位置。


根据我目前的进度,应该每3天一个小note,每星期一个topic summary。

和文史有关,绝对有关。职场历史也是历史,不能歧视!版主四马是拦不住我的!


TOP
分享到微信 分享到Facebook 分享到Twitter 分享到新浪微博 复制到剪贴板
agree
0
disagree
0
2#

给楼主点赞

TOP
agree
0
disagree
0
3#

https://forums.huaren.us/showtopic.html?topicid=2573159&fid=398&page=30


从这里开始。Leetcode读书笔记。


本来是发chats;不过,有点不合适。放这里吧。

TOP
agree
0
disagree
0
4#

友情支持

TOP
agree
0
disagree
0
5#

友情支持


tidewater 发表于 2020-07-31 00:06

谢潮水。军功章有你的一半


你在原帖的评论我会汇总加过来。现在正在和concurrency的leetcode奋斗,tree的搞定,这个周末写notes。

TOP
agree
0
disagree
0
6#

我的第二份工作,是在Linux kernel mode device driver。大系统里面,16 computing blades,每个blades上面4个CPU complex,每个CPU若干个core,还有hyper thread。每个thread齐头并进,有时候需要lock。一个CPU里面的lock,用semephore/mutex可以解决;不同blades之间的lock,必须靠硬件支持的atomic transaction。这个特殊硬件需要的device driver,就是我们小组负责。


今天的leetcode,随便看了concurrency的topic,做了几个题目;refresh memory也学新东西。潮水说的,c++17。那就从这几个lock开始吧。(有的是c++11)。说错了由潮水老师补充(


  1. lock_handle
  2. unique_lock
  3. scope_lock


lock_handle(mutex): 一直blocking,直到mutex available。不需要unlock。从当前程序/section{} 退出的时候,自动release。工作中,我一般用这个。

unique_lock():支持unlock。比lock_handle 灵活。用condition_variable的时候,必须用它。condition_variable(unique_handle, condition)相当于”only when condition is true, do we try to lock"。这样可以直接把checking写入lock。当程序从这里退出,condition is true,plus the lock is obtained. 当然必须记住:需要unlock later。

scope_lock: 属于c++17。对于多个mutex一起lock。如果用以前的stand_lock,需要考虑multi-lock的顺序,极其容易deadlock。这个scope_lock很方便。


常见的用法,当然是multi-thread 情况了。

https://en.cppreference.com/w/cpp/thread/scoped_lock


几个points:

  1. lock_guard wrapped in {}, only effective inside this code section.
  2. scoped_lock works with multiple locks, grabbing them atomically.
  3. threads use emplace_back rather than push_back. This is a performance improvement, reduced from construction & copy into in-place construction.


职场历史故事:Leetcode-6楼


TOP
agree
0
disagree
0
发新话题 回复该主题