boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请问C++ threading w/ lock free algorithms
相关主题
谁给讲讲test-and-set怎么实现mutex?
请教大牛用mutex lock实现reader writer lock
面经+一点个人体会
embedded Linux ,面试了几次,都问这个问题了。不知道答案??
怎么才是 精简,准确呢? spinlock VS semaphore 的 区别??
菜鸟请教多线程怎么学
Re: 别了,纽约 (转载)
FLAG rej/offer 求比较
multi thread复习请教
pure storage一道面试题
相关话题的讨论汇总
话题: lock话题: c++话题: mutex话题: free话题: threading
进入JobHunting版参与讨论
1 (共1页)
i**e
发帖数: 604
1
所谓的lock free,是指用std::lock_guard 么?感觉lock_guard像
wrapper。。。
请问还有别的好方法么?
刚刚开始看,要是能大方向上指点我一下就更好了!谢谢!:)
s*w
发帖数: 729
2
lock_guard 就是 lock 自动释放
lock free 是指 async

【在 i**e 的大作中提到】
: 所谓的lock free,是指用std::lock_guard 么?感觉lock_guard像
: wrapper。。。
: 请问还有别的好方法么?
: 刚刚开始看,要是能大方向上指点我一下就更好了!谢谢!:)

s********u
发帖数: 1109
i**e
发帖数: 604
4
这样啊!那要把async好好看看。。。能请你例举一下C++ multithreading应用里最重
要的几部分么?我看的时候,tutorial总是循序渐进的,推翻前面简单幼稚的思路,很
希望提前知道一下最先进的有哪些~ :)谢谢!

【在 s*w 的大作中提到】
: lock_guard 就是 lock 自动释放
: lock free 是指 async

i**e
发帖数: 604
5
谢谢!太好了,能和你一起学一下:)

【在 s********u 的大作中提到】
: 我最近也在看,http://www.baptiste-wicht.com/2012/03/cpp11-concurrency-part1-start-threads/ 这篇写的很清楚
l*n
发帖数: 529
6
async一般是指IO non blocking,跟lock free不沾边。
lock free是指通过多用immutable或者atomic compare and swap等来避开lock的使用。

【在 s*w 的大作中提到】
: lock_guard 就是 lock 自动释放
: lock free 是指 async

s*w
发帖数: 729
7
我前一阵子刚使劲看过 C++11 里面的 multithreading
对 thread, mutex, lock_guard, condition_variable 比较熟悉, C++11 没
semaphore, 最高深的使用 promise/future,  async 来做,还不大会

【在 i**e 的大作中提到】
: 这样啊!那要把async好好看看。。。能请你例举一下C++ multithreading应用里最重
: 要的几部分么?我看的时候,tutorial总是循序渐进的,推翻前面简单幼稚的思路,很
: 希望提前知道一下最先进的有哪些~ :)谢谢!

s*w
发帖数: 729
8
恩多些提醒,我再钻研一下这个区别

用。

【在 l*n 的大作中提到】
: async一般是指IO non blocking,跟lock free不沾边。
: lock free是指通过多用immutable或者atomic compare and swap等来避开lock的使用。

a****Q
发帖数: 83
9
不觉得lock需要基于某种语言来看,基本的思路都是一样的,当然,配合上语言,实现起
来会有不区别:
简单讲就lock和lock free
lock 具体实现:
Java: concurrency package
C/C++; pthread, C11
Linux kernel: spinlock_t, semaphore/mutex, rwlock_t.
Kernel的实现相对复杂一点,因为要区分当前的context,spinlock_t/rwlock_t会屏蔽中
断,所以不能block当前进程,比如不能分配内存,不能有磁盘或是网络读写.其他的和
user space的实现没有概念上的区别.
lock free 的实现实质上就是把lock从一段代码进一步精确到一条或是几条代码,所以
需要硬件上的配合.最实质的就是如何运用memory fence(也就是memory barrier)和CAS
(compare and swap)指令.
具体的实现:
Java: final/volatile/atomic variables;
ass/C/C++: 在C11出来之前很多都是直接内嵌汇编指令,C11出来后有了C++的memory
model,也提供了不少接口.
Linux kernel: 除了直接内嵌汇编指令外,很多都使用RCU.
不少这方面的资料:
Java的话JCIP差不多是这方面的必备;
C/C++的话可以看pthread和C++ concurrency in practice(written by anthony)
Linux kernel: 直接看Linux/Documentation
s********u
发帖数: 1109
10
c++里的mutex,和java里的lock主要是什么区别呢?好像是说mutex是system wise的?
还有就是mutex有没有thread ownership这种概念,就是一个thread的mutex不能由另一
个来unlock。

【在 s*w 的大作中提到】
: 我前一阵子刚使劲看过 C++11 里面的 multithreading
: 对 thread, mutex, lock_guard, condition_variable 比较熟悉, C++11 没
: semaphore, 最高深的使用 promise/future,  async 来做,还不大会

相关主题
embedded Linux ,面试了几次,都问这个问题了。不知道答案??
怎么才是 精简,准确呢? spinlock VS semaphore 的 区别??
菜鸟请教多线程怎么学
Re: 别了,纽约 (转载)
进入JobHunting版参与讨论
s*w
发帖数: 729
11
不懂 java ,所以不知道区别; c++ 的 mutex 在 linux 里面就是 pthread 的
东西,不过我曾经想看看到底是怎么定义的,没看懂,貌似就是个整数union;要是有
大拿来讲讲就好了
mutex 是有owner 的,不能去 lock/unlock 别人的
semaphore 没 owner, 不过 c++11 没有

【在 s********u 的大作中提到】
: c++里的mutex,和java里的lock主要是什么区别呢?好像是说mutex是system wise的?
: 还有就是mutex有没有thread ownership这种概念,就是一个thread的mutex不能由另一
: 个来unlock。

s********u
发帖数: 1109
12
说的很清楚,谢谢!

【在 s*w 的大作中提到】
: 不懂 java ,所以不知道区别; c++ 的 mutex 在 linux 里面就是 pthread 的
: 东西,不过我曾经想看看到底是怎么定义的,没看懂,貌似就是个整数union;要是有
: 大拿来讲讲就好了
: mutex 是有owner 的,不能去 lock/unlock 别人的
: semaphore 没 owner, 不过 c++11 没有

g****o
发帖数: 547
13
lock free不是mutex,是atomic相关的
用compare_exchange_weak之类的函数
i**e
发帖数: 604
14
多谢各位指点!看来是atomic, compare_% 这些:)
呵呵,atomic 这名字起得不错呀。。。赞!
d******3
发帖数: 70
s********u
发帖数: 1109
16
晚上花时间看了下,非常好的教程,2个小时就能get a whole picture.

【在 d******3 的大作中提到】
: 这个会有帮助:
: http://www.youtube.com/playlist?list=PL5jc9xFGsL8E12so1wlMS0r0h

1 (共1页)
进入JobHunting版参与讨论
相关主题
pure storage一道面试题
pure storage 面试题
问个OS里面spin lock的问题。
concurrency应该怎么复习
请教系统设计问题
为什么板上这么多人还是抱着C++不学Java呢?
C++11一个新特点都举不出来是不是很夸张
C++定义数组长度可以写成int a[n]吗?
现在只是web泡沫而已,传统行业都在大刀阔斧地改革
问个thread synchronization的问题
相关话题的讨论汇总
话题: lock话题: c++话题: mutex话题: free话题: threading