我有一个家庭作业的问题,我真的不知道如何开始。
问题是:“这个问题使用了新的称为ReaderWriterAppender信号量的同步原语。与ReaderWriter信号量一样,同样的规则也适用于读取器和写入器,并为附加器添加了这些新规则:
1)在任何给定时间内,最多只能有一个附加器拥有该信号量。
2)附加器和写入器不能同时拥有信号量
3)读取可以在追加期间进行。“
我需要自己实现它。
这里有一个给定的结构
typedef struct {
//structure here
} rwasem_t;
void rwalock_init(rwasem_t * rwa) {
}
void rwa_read_lock(rwasem_t * rwa) {
}
void rwa_write_lock(rwasem_t * rwa) {
}
void rwa_append_lock(rwasem_t * rwa) {
}
void rwa_append_unlock(rwasem_t * rwa) {
}
问题是,我不知道如何处理这个问题。我知道什么是读写信号量,我知道如何使用它们,而且我以前也用过它们。但我不知道如何实现它们。他们甚至不告诉我是否可以使用API或其他任何东西。基本上,“实现它”
提前谢谢你,
Gasim
发布于 2012-02-14 15:03:42
一些提示:
伪代码:
ReadWriteLock lock_a, lock_b;
void rwa_read_lock(rwasem_t * rwa) {
lock_a.do_somethingA();
lock_b.do_somethingB(); // is this needed?
}
void rwa_write_lock(rwasem_t * rwa) {
lock_a.do_somethingC();
lock_b.do_somethingD(); // is this needed?
}
void rwa_append_lock(rwasem_t * rwa) {
lock_a.do_somethingE();
lock_b.do_somethingF(); // is this needed?
}
什么是"do_somethingX()“?
锁定的顺序重要吗?如果是,正确的顺序是什么?
https://stackoverflow.com/questions/9272750
复制相似问题