资源简介
这是一个在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完整手册
相关资源
- linux ubuntu
- linux下多线程socket通信完整源码文件
- 深入理解Linux内核第三版中文版+英文
- 最全Linux C 库函数官方中文API手册
- UbuntuLinux下通过ndiswrapper安装无线网卡
- deepin-scrot
- linux下Questasim10/Modelsim安装以及破解方
- how linux works 精通linux 中文版 第二版
- 在Linux环境下模拟实现简单命令解释器
- IT机房搬迁实施方案
- 马哥Linux2016全套视频教程及随堂笔记
- 山东大学linux期末复习资料.zip
- Linuxc聊天室,有日志功能可群聊可私
- 简易路由器-demo
- 2018年Linux系统安全检查、加固shell脚本
- 上传项目到Linux服务器
- CentOS-7-x86_64-DVD-1611.iso镜像
- LinuxFTP简单实现、
- Linux_C函数库参考手册(清晰版完整版
- 马哥Linux运维共208讲(初级中级高级必
- 《嵌入式Linux驱动开发教程》书中完整
- Linux常用命令手册大全
- 电子相册--QT
- NVIDIA-Linux-x86_64-378.09
- NVIDIA-Linux-x86_64-384.59
- linux下基于TCP的多用户聊天室含文档
- Linux贪吃蛇
- Linux音乐播放器代码
- linux的Qt设置系统时间
- sd卡协议(中文)
评论
共有 条评论