资源简介

这是一个在Linux 0.11下简单的信号量的实现,笔者只做了信号量最基本的功能,包括几乎所有要改动的文件。

资源截图

代码片段和文件信息

#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 < NUM)
{
    producer(i s_m s_f s_e);
    i++;
}
exit(0);
}
else if(pid1 > 0)
{
pid2 = fork();
if(pid2 == 0)
{
i = 0;
while(i < NUM)
    {
        sleep(1);
        consumer(2 s_m s_f s_e);
        i++;
    }
exit(0);
}
while(i < NUM)
{
    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下信号量的简单实现——用生产者消费者的问题做检验\pc.c

     文件       2141  2008-12-02 22:15  Linux 0.11下信号量的简单实现——用生产者消费者的问题做检验\sem.c

     文件       2158  2008-12-02 22:07  Linux 0.11下信号量的简单实现——用生产者消费者的问题做检验\sem.c~

     文件        316  2008-12-02 21:30  Linux 0.11下信号量的简单实现——用生产者消费者的问题做检验\semc.c

     文件       2842  2008-12-02 21:27  Linux 0.11下信号量的简单实现——用生产者消费者的问题做检验\sys.h

     文件       5229  2008-12-02 19:37  Linux 0.11下信号量的简单实现——用生产者消费者的问题做检验\system_call.s

     文件       6561  2008-12-02 20:49  Linux 0.11下信号量的简单实现——用生产者消费者的问题做检验\unistd.h

     目录          0  2008-12-22 12:46  Linux 0.11下信号量的简单实现——用生产者消费者的问题做检验

----------- ---------  ---------- -----  ----

                20593                    8


评论

共有 条评论