0

我想写一个程序,一个模块是:

我有两个进程,进程 A 负责使用recvfrom()or接收数据包recv ,另一个进程 B 继续处理其他一些事情。

每当进程A收到一个数据包时,它应该立即从数据包中提取一些信息并将信息告诉进程B。B需要立即停止它正在做的事情并读取信息。

这就像一个tcp栈,我说,进程A负责接收数据包或ack包,进程B负责发送包。当进程 A 接收到一个数据包时,进程 B 应该读取数据包,更新其下一个传出包的 seq 号和 ack_seq 号。

无论如何,我的想法是进程 A 和 B 应该共享一个结构变量,并且在 varialbe 上有一个锁。B继续读取变量,当A收到一个数据包时,它锁定变量,因此B被阻塞。A修改变量后,A解锁它,B读取变量,然后继续做自己的工作。伪代码就像

struct SHARE shared_variable;
pid=fork();
if(pid==0) {  // process B
        while(1){
         lock(shared_variable);
         k=read(shared_variable);
         unlock(shared_variable);
         do_something(k);  
         }
       }

 if(pid>0){ // process A
       while(1){
       recv();
       lock(shared_variable);
       modify(shared_variable);
       unlock(shared_variable);
       }
   }

我不熟悉进程间通信和网络编程我的问题是:
1我的伪代码的结构好吗?有更好的解决方案吗?2 共享变量我应该使用什么样的IPC风格 3 我只知道一些理论,有具体的示例源代码吗?

thanks!
4

0 回答 0