g******d 发帖数: 1774 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: gobigred (我是tony), 信区: Programming
标 题: 最近面试都是多线程的啦?类似c++ semaphore , 但需要动态改变semaphore的值
发信站: BBS 未名空间站 (Mon Feb 24 13:51:57 2020, 美东)
面试题是这样的,c++
有很多同时进行的 request 或者action, 都会call同一个function,
需要你在这个function中控制同时执行的request/action的数目。
这个数目可变,
譬如, 刚开始, 允许的数目是 1, 也就是每次只有一个可以执行,相当于mutex. 假
如有500 个request, 那就是一个完了在下一个
过一段时间, 用户把允许的数目改为500, 也就是同时可以500个一起(当然也是
protected), 相当于semaphore, 假如有500个,可以不等待一起执行, 假如是1000个
,第一批500个同时进行,后面的就得等 someone to sem_post.
一开始思路就是这样,讨论了一会。 但问题是, 这个数目可以动态变化, 怎么实现。
这样的话, mutex 和 semaphore 都不能选了,semaphore不能改值, 想到可以可以
用 conditional_variable, 把“到了500个”作为一个event, 很快时间到了,也没能
给出答案。后来想想, 好像是可以的。
哪位大牛看看怎么实现比较好? | n*****n 发帖数: 5277 | 2 最讨厌并行编程了,又难debug, api又难用 | e********2 发帖数: 495 | |
|