计算进程间通信所用的时间

时间:2013-06-17 05:48:24

标签: c linux

在Linux中如果我有两个进程使用可以相互通信的C程序(通过shm,socket,pipe等),我怎样才能测量进程在C语言中进行通信所需的时间

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

2 个答案:

答案 0 :(得分:2)

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

struct 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 查看上次邮件接收时间。

答案 1 :(得分:1)

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