資源簡介
這是一個在Linux 0.11下簡單的信號量的實(shí)現(xiàn),筆者只做了信號量最基本的功能,包括幾乎所有要改動的文件。

代碼片段和文件信息
#include?
#include?
#define?__LIBRARY__
#include?
#define?NUM?500
typedef?int?goods;
_syscall2(struct?sem_t?*?sem_open?const?char*?name?unsigned?int??value)
_syscall1(int?sem_wait?struct?sem_t?*?sem)
_syscall1(int?sem_post?struct?sem_t?*?sem)
_syscall1(int?sem_unlink?const?char?*?name)
_syscall1(int?produce?int?item)
_syscall0(int?consume)
void?*?s_m?*s_f?*s_e;
void?consumer(int?flag?void?*?m?void?*?f?void?*?e)
{
sem_wait(f);
sem_wait(m);
printf(“the?consumer?of?child[%d]?%d\n“?flag?consume());
fflush(stdout);
sem_post(m);
sem_post(e);
}
void?producer(?int?i?void?*?m?void?*?f?void?*?e)
{
sem_wait(e);
sem_wait(m);
produce(i);
sem_post(m);
sem_post(f);
}
int?main()
{
pid_t?pid1?pid2;
int?i?=?0;
s_m?=?sem_open(“M“?1);
s_f?=?sem_open(“F“?0);
s_e?=?sem_open(“E“?10);
pid1?=?fork();
if(pid1?==?0)
{
i?=?0;
while(i? {
????producer(i?s_m?s_f?s_e);
????i++;
}
exit(0);
}
else?if(pid1?>?0)
{
pid2?=?fork();
if(pid2?==?0)
{
i?=?0;
while(i? ????{
????????sleep(1);
????????consumer(2?s_m?s_f?s_e);
????????i++;
????}
exit(0);
}
while(i? {
????sleep(1);
????consumer(1?s_m?s_f?s_e);
????i++;
}
}
sem_unlink(“M“);
sem_unlink(“F“);
sem_unlink(“E“);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1346??2008-12-02?22:09??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗\pc.c
?????文件???????2141??2008-12-02?22:15??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗\sem.c
?????文件???????2158??2008-12-02?22:07??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗\sem.c~
?????文件????????316??2008-12-02?21:30??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗\semc.c
?????文件???????2842??2008-12-02?21:27??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗\sys.h
?????文件???????5229??2008-12-02?19:37??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗\system_call.s
?????文件???????6561??2008-12-02?20:49??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗\unistd.h
?????目錄??????????0??2008-12-22?12:46??Linux?0.11下信號量的簡單實(shí)現(xiàn)——用生產(chǎn)者消費(fèi)者的問題做檢驗
-----------?---------??----------?-----??----
????????????????20593????????????????????8
- 上一篇:動物識別系統(tǒng)
- 下一篇:SNMP+MIB完整手冊
評論
共有 條評論