Листинг А.6. Функции reader и writer
//bench/bw_pxmsg.c
41 void
42 writer(int contfd, mqd_t mqsend)
43 {
44 int ntowrite;
45 for(;;) {
46 Read(contfd, &ntowrite, sizeof(ntowrite));
47 while (ntowrite > 0) {
48 Mq_send(mqsend, buf, xfersize, 0);
49 ntowrite –= xfersize;
50 }
51 }
52 }
53 void
54 reader(int contfd, mqd_t mqrecv, int nbytes)
55 {
56 ssize_t n;
57 Write(contfd, &nbytes, sizeof(nbytes));
58 while ((nbytes > 0) &&
59 ((n = Mq_receive(mqrecv, buf, xfersize, NULL)) > 0)) {
60 nbytes –= n;
61 }
62 }