d********w 发帖数: 363 | 1 有一个厕所,它可给男生,女生用,有如下规则
1. 如果厕所里面没人,外面有人可以直接进入
2. 如果厕所里面人,只能同性进入,异性不能。比如有男人,女人在外只能等,反之
依然
3. 厕所里面坑位是N,但可以超过N个同性在里面(比如进去只洗手)
客户有如下几个状态
1. 在里面“方便” (占一个坑位)
2. 在厕所洗手 (不占坑位)
3. 在外面等待
请设计class,接口,如果多线程如何保证安全,如果外面有人等待,如何保证公平? |
d****n 发帖数: 1637 | |
M********5 发帖数: 715 | 3 坑位就相当于write,洗手就相当于read,这道题就相当于是把一般的那种一个文件一
个写几个读演变成了一堆文件可以有一堆写一堆读的问题,实际上就是一个变体,随便
一个多线程的例子改一改多思考下应该会work的 |
H****r 发帖数: 2801 | 4 还真是...
【在 d****n 的大作中提到】 : 这个例子太恶心了,没办法思考
|
s*****n 发帖数: 5488 | 5 如果不考虑效率,做个monitor class好了。
所有的方法都locked or sycned.
至于fairness,建个queue.如果不能进,就不弹出。直到没人。
效率很差就是。
慢慢提高吧。
【在 d********w 的大作中提到】 : 有一个厕所,它可给男生,女生用,有如下规则 : 1. 如果厕所里面没人,外面有人可以直接进入 : 2. 如果厕所里面人,只能同性进入,异性不能。比如有男人,女人在外只能等,反之 : 依然 : 3. 厕所里面坑位是N,但可以超过N个同性在里面(比如进去只洗手) : 客户有如下几个状态 : 1. 在里面“方便” (占一个坑位) : 2. 在厕所洗手 (不占坑位) : 3. 在外面等待 : 请设计class,接口,如果多线程如何保证安全,如果外面有人等待,如何保证公平?
|
s*****n 发帖数: 5488 | 6 如果不考虑效率,做个monitor class好了。
所有的方法都locked or sycned.
至于fairness,建个queue.如果不能进,就不弹出。直到没人。
效率很差就是。
慢慢提高吧。
【在 d********w 的大作中提到】 : 有一个厕所,它可给男生,女生用,有如下规则 : 1. 如果厕所里面没人,外面有人可以直接进入 : 2. 如果厕所里面人,只能同性进入,异性不能。比如有男人,女人在外只能等,反之 : 依然 : 3. 厕所里面坑位是N,但可以超过N个同性在里面(比如进去只洗手) : 客户有如下几个状态 : 1. 在里面“方便” (占一个坑位) : 2. 在厕所洗手 (不占坑位) : 3. 在外面等待 : 请设计class,接口,如果多线程如何保证安全,如果外面有人等待,如何保证公平?
|
S**********e 发帖数: 503 | 7 这种题目需要完全实现这些功能吗,还是写出接口就行了 |
g*****e 发帖数: 282 | 8 如果是等待,是queue还是spin/poll?
一般producer/consumer模型万能吧
关于男女相斥,用一个mutex。n个坑,典型的buffer是N的写操作
【在 d********w 的大作中提到】 : 有一个厕所,它可给男生,女生用,有如下规则 : 1. 如果厕所里面没人,外面有人可以直接进入 : 2. 如果厕所里面人,只能同性进入,异性不能。比如有男人,女人在外只能等,反之 : 依然 : 3. 厕所里面坑位是N,但可以超过N个同性在里面(比如进去只洗手) : 客户有如下几个状态 : 1. 在里面“方便” (占一个坑位) : 2. 在厕所洗手 (不占坑位) : 3. 在外面等待 : 请设计class,接口,如果多线程如何保证安全,如果外面有人等待,如何保证公平?
|
b*****e 发帖数: 131 | 9 就是两种信号量的使用:性别用mutex, 坑位用semaphore |