【发布时间】:2012-02-14 06:38:59
【问题描述】:
我有一个作业问题,我真的不知道如何开始。
这是一个问题: “这个问题利用了称为 ReaderWriterAppender 信号量的新同步原语。对于读取器和写入器,适用与 ReaderWriter 信号量相同的规则,并为附加程序添加了这些新规则:
1) 在任何给定时间,最多只能有一个附加程序拥有信号量。
2) appender 和 write 不能同时拥有信号量
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) {
}
问题是,我不知道如何解决这个问题。我知道 reader writer semaphore 是什么,我知道如何使用它们,而且我以前也使用过它们。但我不知道如何实现它们。他们甚至没有告诉我是否可以使用 API 或其他任何东西。基本上,“实现它”
提前致谢,
加西姆
【问题讨论】:
-
必须缺少一些要求,因为如上所述,您可以使用读/写锁并让
rwa_append_lock调用rwa_write_lock。
标签: c multithreading file semaphore