信号量问题 程序中,有时存在一种特殊代码, 最多只允许一个进程执行该部分代码。 这部分区域,称为“临界区”然而在多进程并发执行时,当一个进程进入临界区,因某种原因被挂起时, 其他进程就有可能也进入该区域。解决办法:使用信号量什么是信号量 信号量,是一种特殊的变量。 只能对信号量执行... Read More
main1/msg_rcv.c#include #include #include #include #include #include #include #define MSG_SIZE 80struct my_msg_st { long int msg_type; ... Read More
消息队列什么是消息队列 消息队列,用于从一个进程向另一个进程发送数据。 但仅把数据发送到一个“队列”中,而不指定由哪个进程来接受。 消息队列,独立与发送消息的进程和接收消息的进程。 (信号、管道、命名管道都不独立与发送和接收进程)消息队列,有最大长度限制:MSGMNB 消息队列中的... Read More
main_r.c#include #include #include #include #include #include #include #include #define SHM_SIZE 100int main(void){ int shmid; char bu... Read More
共享内存 1 什么是共享内存 使得两个不同的进程共享一段逻辑内存,实际上都实现为共享同一段物理内存。 原理如下图: 2 共享内存的使用 2.1共享内存的获取 原型:int shmget (key_t key, size_t size, int shmflg); 参数:... Read More
main.c#include #include #include #include #include #include #include #include int main(void){ int fd = 0; fd_set read_set; struct ti... Read More
多路复用select问题 当需要等待某个或多个设备(文件)可读或可写时, 如果使用循环不停地检测是否可读可写,则效率很低。解决办法: 使用select系统调用。 select的用法 man 2 selectint select(int nfds, fd... Read More