欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

[国嵌攻略][084][信号同步编程]

发布时间:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 [国嵌攻略][084][信号同步编程] 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

进程同步

一组并发进程进行相互合作、相互等待,使得各进程按一定的顺序执行的过程称为进程间的同步。

 

进程同步与进程互斥

进程同步问题的关键在于生产者不需要获取信号量,消费者不需要释放信号量,所以信号量的初值设置为0。但是进程互斥问题中双方都需要获取和释放信号量,所以信号量的初值至少为1。

 

producor.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;fd = open("product.txt", O_RDWR | O_CREAT, 0777);//睡眠等待sleep(10);//写入数据write(fd, "The product is finished!", 25);//关闭文件 close(fd);//创建信号量int key;int semid;key = ftok("product.txt", 0);semid = semget(key, 1, IPC_CREAT);//设置信号量semctl(semid, 0, SETVAL, 0); //设置信号量0的值为0//释放信号量struct sembuf sops;sops.sem_num = 0;sops.sem_op = 1;sops.sem_flg = SEM_UNDO;semop(semid, &sops, 1); }

 

customer.c

#include <stdlib.h>#include <sys/ipc.h> #include <sys/sem.h>void main(){//打开信号量int key;int semid;key = ftok("product.txt", 0);semid = semget(key, 1, IPC_CREAT);//获取信号量struct sembuf sops;sops.sem_num = 0;sops.sem_op = -1;sops.sem_flg = SEM_UNDO;semop(semid, &sops, 1);//拷贝文件system("cp product.txt ship.txt"); }

 

转载于:https://www.cnblogs.com/d442130165/p/5225409.html

总结

以上是生活随笔为你收集整理的[国嵌攻略][084][信号同步编程]的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。