在Linux中如果我有两个进程使用可以相互通信的C程序(通过shm,socket,pipe等),我怎样才能测量进程在C语言中进行通信所需的时间
即。给定进程A和B,A发送消息和B,读取它,MB是某种用于通信的消息框,我希望测量A将消息放入MB以及B检索消息所花费的时间来自MB。
答案 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的结果)放入消息前导码中,并使用接收端的时间来测量差异。