avatar
一道关于lock的面试题# JobHunting - 待字闺中
S*t
1
大家都知道lock吧,thread synchronization用的。
这个题目是这样的:
假设我们有一个现成的library提供了基本的reader/writer lock功能:
class Lock {
public:
Lock();
// exclusive writer lock
void GetLock();
void ReleaseLock();
// shared reader lock
void GetReaderLock();
void ReleaseReaderLock();
};
Problem 1: implement a functionality to atomically upgrade a reader lock to
writer lock, if no one else is holding reader lock
Problem 2: implement a functionality to manage lock per keys, i.e.:
template
class LockManager {
void GetLock(KeyType key);
void ReleaseLock(KeyType key);
void GetReaderLock(KeyType key);
void ReleaseReaderLock(KeyType key);
}
requirement:
a. able to lock/unlock on different keys concurrently
b. keep memory space linear to the size of "active keys", i.e., if no one is
holding lock for a key, you need to do garbage collect for that key.
avatar
c*t
2
mark
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。