2

在 Linux 中,如果我有两个使用可以相互通信的 C 程序(通过 shm、socket、管道等)的进程,我如何测量进程在 C 中通信所花费的时间?

即给定进程 A 和 B,A 发送消息,B 读取消息,MB 是某种用于通信的消息框,我希望测量 A 将消息放入 MB 和 B 检索消息所需的时间来自 MB 的消息。

4

2 回答 2

2

对于消息队列,每个消息队列都有一个唯一的 msg 队列 ID。并具有类型为 struct msquid_ds 的关联数据结构,定义在 中包含以下成员:

结构 ipc_perm msg_perm;

   ushort msg_qnum;         /* no of messages on queue */

   ushort msg_qbytes;       /* bytes max on a queue */

   ushort msg_lspid;        /* pid of last msgsnd call */

   ushort msg_lrpid;        /* pid of last msgrcv call */

   time_t msg_stime;        /* last msgsnd time */

   time_t msg_rtime;        /* last msgrcv time */

   time_t msg_ctime;        /* last change time */

您可以访问msg_stime获取最后一条消息发送时间,访问msg_rtime获取最后一条消息接收时间。

于 2013-06-17T06:20:04.960 回答
1

将时间,例如gettimeofday的结果放入消息前导码中,用接收端的时间来衡量差异。

于 2013-06-17T05:54:58.480 回答