由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 是不是被印度人故意往沟里带
相关主题
read-write locker的实现问道多线程的简单题目
请教大牛用mutex lock实现reader writer lockC++ Singleton的实现
multi-threading guru们nVidia phone interview (intern Infrastructure Arch)
请教一下那道H2O的题Palantir 2nd coding interview [pass, set for on-site]
碰到面试官水平太差看不懂答案怎么办?谁给讲讲test-and-set怎么实现mutex?
一个多线程的题目,这个写法可以过关么nvidia面筋
请问pure storage 的那道用spin lock and flags to implement mutex怎么做面试题
攒人品。面试经历(2)谁给改一个线程安全的smarter pointer类
相关话题的讨论汇总
话题: cv话题: writer话题: bool话题: mutex话题: multiple
进入JobHunting版参与讨论
1 (共1页)
r*******g
发帖数: 1335
1
前几天电面一大公司,题目是bounded blocking queue,因为我准备过r/w lock的实现
,所以大概知道是mutex+CV,也就是传说中的monitor,但是我是用c++,所以不会java。
问题来了,写完了,貌似没什么问题,然后有一个问题,是要实现writemultiple(),
就是一次写入多个,如果没有空间写,需要等reader,而且wrtemultiple过程中不能被
其它writer打断,我因为本来对这个不熟,所以一下没反应过来。
但是印度面试官提醒我可以引入其它lock,所以我真的就上钩了,在这里卡壳了一会,
到最后也没写完整。
今天仔细复习了一下,现在想想,其实引入一个变量表明现在正在multiplewrite,不
就可以block writer了吗?而且丝毫不影响已有的reader逻辑。貌似不用引入新的CV。
幸好国人大哥似乎帮忙了,还可以继续二面。
b**********5
发帖数: 7881
2
如果就一个变量, 你怎么才能发现reader可以了, 现在有足够空间写了?

java。

【在 r*******g 的大作中提到】
: 前几天电面一大公司,题目是bounded blocking queue,因为我准备过r/w lock的实现
: ,所以大概知道是mutex+CV,也就是传说中的monitor,但是我是用c++,所以不会java。
: 问题来了,写完了,貌似没什么问题,然后有一个问题,是要实现writemultiple(),
: 就是一次写入多个,如果没有空间写,需要等reader,而且wrtemultiple过程中不能被
: 其它writer打断,我因为本来对这个不熟,所以一下没反应过来。
: 但是印度面试官提醒我可以引入其它lock,所以我真的就上钩了,在这里卡壳了一会,
: 到最后也没写完整。
: 今天仔细复习了一下,现在想想,其实引入一个变量表明现在正在multiplewrite,不
: 就可以block writer了吗?而且丝毫不影响已有的reader逻辑。貌似不用引入新的CV。
: 幸好国人大哥似乎帮忙了,还可以继续二面。

b**********5
发帖数: 7881
3
如果就一个变量, 你怎么才能发现reader可以了, 现在有足够空间写了?
如果就一个变量, 你怎么才能发现writemultiple finish了?

java。

【在 r*******g 的大作中提到】
: 前几天电面一大公司,题目是bounded blocking queue,因为我准备过r/w lock的实现
: ,所以大概知道是mutex+CV,也就是传说中的monitor,但是我是用c++,所以不会java。
: 问题来了,写完了,貌似没什么问题,然后有一个问题,是要实现writemultiple(),
: 就是一次写入多个,如果没有空间写,需要等reader,而且wrtemultiple过程中不能被
: 其它writer打断,我因为本来对这个不熟,所以一下没反应过来。
: 但是印度面试官提醒我可以引入其它lock,所以我真的就上钩了,在这里卡壳了一会,
: 到最后也没写完整。
: 今天仔细复习了一下,现在想想,其实引入一个变量表明现在正在multiplewrite,不
: 就可以block writer了吗?而且丝毫不影响已有的reader逻辑。貌似不用引入新的CV。
: 幸好国人大哥似乎帮忙了,还可以继续二面。

r*******g
发帖数: 1335
4
这一个变量表示现在有multiplewriter存在
multiplewriter里面,每次尽量写所有的,如果写不完,那么就read_CV.signal()
multiplewriter(int no_of_item){
mutex.lock()
while(没有空间写)
pthread_cond_wait(write_CV, mutex);
bool_now_multiple_writer = true;
int written = 0;
while(written 判断可以写多少
写入n
written+=n;
read_CV.signal(); //让reader继续写。
while(没有空间写)
pthread_cond_wait(write_CV, mutex);
}
bool_now_multiple_writer = false;
mutex.unlock();
}
singlewriter(){
逻辑不变,只是多一个判断bool_now_multiple_writer==false才继续。
}
这样行不?求建议。

【在 b**********5 的大作中提到】
: 如果就一个变量, 你怎么才能发现reader可以了, 现在有足够空间写了?
: 如果就一个变量, 你怎么才能发现writemultiple finish了?
:
: java。

e***a
发帖数: 1661
5
it's important that ur solution should match the interviewer's thought
even though ur solution is excellent.
b*****n
发帖数: 618
6
唉,人家并没有说错,只需要加另一个write lock来保证不同的write操作是mutual
excluded就可以了,灰常简单的做法。
你这么写还需要稍微修改一下,现在还不能保证不同multiwrite之间不能被打断的。
r*******g
发帖数: 1335
7
如果是多个multiplewriter,似乎也可以,我稍微改了下
multiplewriter(int no_of_item){
mutex.lock()
while(没有空间写 && bool_now_multiple_writer==false)
pthread_cond_wait(write_CV, mutex);
bool_now_multiple_writer = true;
int written = 0;
while(written 判断可以写多少
写入n
written+=n;
read_CV.signal(); //让reader继续写。
while(没有空间写) //这里就不能等待bool_now_multiple_writer==false了。
pthread_cond_wait(write_CV, mutex);
}
bool_now_multiple_writer = false;
mutex.unlock();
}
singlewrite(){
mutex.lock();
while (没有空间写 && bool_now_multiple_writer==false)
pthread_cond_wait(write_CV, mutex);
写一个entry
read_CV.signal(); //让reader继续写。
mutex.unlock();
}
read(){
mutex.lock();
while (没有entry读)
pthread_cond_wait(read_CV, mutex);
读一个entry
write_CV.signal(); //让writer继续写
mutex.unlock();
}

【在 b*****n 的大作中提到】
: 唉,人家并没有说错,只需要加另一个write lock来保证不同的write操作是mutual
: excluded就可以了,灰常简单的做法。
: 你这么写还需要稍微修改一下,现在还不能保证不同multiwrite之间不能被打断的。

i******w
发帖数: 214
8
看来是L

java。

【在 r*******g 的大作中提到】
: 前几天电面一大公司,题目是bounded blocking queue,因为我准备过r/w lock的实现
: ,所以大概知道是mutex+CV,也就是传说中的monitor,但是我是用c++,所以不会java。
: 问题来了,写完了,貌似没什么问题,然后有一个问题,是要实现writemultiple(),
: 就是一次写入多个,如果没有空间写,需要等reader,而且wrtemultiple过程中不能被
: 其它writer打断,我因为本来对这个不熟,所以一下没反应过来。
: 但是印度面试官提醒我可以引入其它lock,所以我真的就上钩了,在这里卡壳了一会,
: 到最后也没写完整。
: 今天仔细复习了一下,现在想想,其实引入一个变量表明现在正在multiplewrite,不
: 就可以block writer了吗?而且丝毫不影响已有的reader逻辑。貌似不用引入新的CV。
: 幸好国人大哥似乎帮忙了,还可以继续二面。

b******d
发帖数: 794
9
记住老印面试官肯定不会提示你,只会逼问你,或者故意误导你,别的老白,老中一般
都乐意给你点提示,老印就是找机会给你使绊子下黑手。

java。

【在 r*******g 的大作中提到】
: 前几天电面一大公司,题目是bounded blocking queue,因为我准备过r/w lock的实现
: ,所以大概知道是mutex+CV,也就是传说中的monitor,但是我是用c++,所以不会java。
: 问题来了,写完了,貌似没什么问题,然后有一个问题,是要实现writemultiple(),
: 就是一次写入多个,如果没有空间写,需要等reader,而且wrtemultiple过程中不能被
: 其它writer打断,我因为本来对这个不熟,所以一下没反应过来。
: 但是印度面试官提醒我可以引入其它lock,所以我真的就上钩了,在这里卡壳了一会,
: 到最后也没写完整。
: 今天仔细复习了一下,现在想想,其实引入一个变量表明现在正在multiplewrite,不
: 就可以block writer了吗?而且丝毫不影响已有的reader逻辑。貌似不用引入新的CV。
: 幸好国人大哥似乎帮忙了,还可以继续二面。

1 (共1页)
进入JobHunting版参与讨论
相关主题
谁给改一个线程安全的smarter pointer类碰到面试官水平太差看不懂答案怎么办?
pthread 编程还是要看看阿一个多线程的题目,这个写法可以过关么
贡献一道湾区小公司的面试题 Medallia请问pure storage 的那道用spin lock and flags to implement mutex怎么做
C++ 实现读写锁的问题 (vmware电面考过)攒人品。面试经历(2)
read-write locker的实现问道多线程的简单题目
请教大牛用mutex lock实现reader writer lockC++ Singleton的实现
multi-threading guru们nVidia phone interview (intern Infrastructure Arch)
请教一下那道H2O的题Palantir 2nd coding interview [pass, set for on-site]
相关话题的讨论汇总
话题: cv话题: writer话题: bool话题: mutex话题: multiple