信号量同步编程
2015-04-27 16:29
204 查看
1.核心概念-进程同步
一组并发进程进行互相合作,互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步。
2.生产者消费者问题
一组并发进程进行互相合作,互相等待,使得各进程按一定的顺序执行的过程称为进程间的同步。
2.生产者消费者问题
/* producter.c */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/ipc.h> #include <sys/sem.h> void main() { int fd; key_t key; int semid; struct sembuf sops; key = ftok("/root",2); /* 创建信号量 */ semid = semget(key,1,IPC_CREAT); /* 设置信号量初始值为0 */ semctl(semid,0,SETVAL,0); /* 创建产品-文件 */ fd = open("./product.txt",O_RDWR|O_CREAT,0775); /* 休息 */ sleep(20); /* 向产品文件填充内容 */ write(fd,"the product is finished",23); close(fd); /* 释放信号量 */ sops.sem_num = 0; sops.sem_op = 1; sops.sem_flg = SEM_UNDO; semop(semid,&sops,1); }
/* customer.c */ #include <stdlib.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> void main() { key_t key; int semid; struct sembuf sops; key = ftok("/root",2); semid = semget(key,1,IPC_CREAT); /* 获取信号量 */ sops.sem_num = 0; sops.sem_op = -1; sops.sem_flg = SEM_UNDO; semop(semid,&sops,1); /* 取走产品文件 */ system("cp ./product.txt ./ship/"); }
相关文章推荐
- <转>linux操作系统编程——共享内存读写(采用信号量进行同步互斥)
- Linux高级编程复习 第九章 信号量同步_socket网络编程基础_TCP_UDP
- 信号量同步编程
- linux 多线程编程 之 信号量互斥同步
- C++多线程编程同步技术剖析:临界区,时间,信号量,互斥量
- Java并发编程的艺术(八)——闭锁、同步屏障、信号量详解
- linux 多线程编程 之 信号量互斥同步
- 进程间通信与同步---共享内存和信号量编程简介
- C++多线程编程同步技术剖析:临界区,时间,信号量,互斥量
- Linux多线程编程入门-同步机制-信号量
- Linux_4.7_信号量同步编程
- <转>linux操作系统编程——共享内存读写(采用信号量进行同步互斥)
- linux 多线程编程 之 信号量互斥同步
- 网络编程(40)—— 使用信号量semaphore进行多进程间的同步
- Linux 信号量同步编程
- 信号量同步编程
- 并发编程之同步机制(一):Semphore信号量
- 【ARM&Linux】Linux信号量同步编程
- java并发编程笔记3-同步容器&并发容器&闭锁&栅栏&信号量
- 【Linux系统编程】进程同步与互斥:POSIX有名信号量