资源简介
这是一个在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
- 上一篇:动物识别系统
- 下一篇:SNMP+MIB完整手册
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
- 基于GTK的Linux环境下的简易任务管理器
- linux扫雷游戏代码
- CAN Linux驱动代码
- Linux系统教材
- intel 82579LM 网卡驱动Linux系统版 v1.9.
- SA1110处理器掌上电脑液晶显示器设计
- 基于Linux的串口服务器设计
- Windows下访问LINUX的利器-SSH
评论
共有 条评论