Листинг 16.6. Процедура многопоточного сервера
//sunrpc/square3/server.c
1 #include "unpipc.h"
2 #include "square.h"
3 bool_t
4 squareproc_2_svc(square_in *inp, square_out *outp, struct svc_req *rqstp)
5 {
6 printf("thread %Id started, arg = %ld\n",
7 pr_thread_id(NULL), inp->arg1);
8 sleep(5);
9 outp->res1 = inp->arg1 * inp->arg1;
10 printf("thread %ld done\n", pr_thread_id(NULL));
11 return(TRUE);
12 }
13 int
14 square_prog_2_freeresult(SVCXPRT *transp, xdrproc_t xdr_result,
15 caddr_t result)
16 {
17 xdr_free(xdr_result, result);
18 return(1);
19 }