Запустим программу-клиент и подождем 10 секунд до вывода результатов (как мы и ожидали): Посмотрев на выводимый сервером текст, мы увидим, что один и тот же поток этого процесса использовался для обработки обоих запросов клиента: Это подтверждает наши предположения о том, что любой поток из пула сервера может использоваться при обработке запросов клиентов для любой процедуры.Листинг 15.12. Функция main сервера
//doors/server7.c
31 int
32 main(int argc, char **argv)
33 {
34 int fd;
35 if (argc != 1)
36 err_quit("usage: server7");
37 fd = Door_create(squareproc, NULL, 0);
38 unlink(PATH_SQUARE_DOOR);
39 Close(Open(PATH_SQUARE_DOOR, O_CREAT | O_RDWR, FILE_MODE));
40 Fattach(fd, PATH_SQUARE_DOOR);
41 fd = Door_create(sqrtproc, NULL, 0);
42 unlink(PATH_SQRT_DOOR);
43 Close(Open(PATH_SQRT_DOOR, O_CREAT | O_RDWR, FILE_MODE));
44 Fattach(fd, PATH_SQRT_DOOR);
45 for (;;)
46 pause();
47 }
solaris % client7 77
result: 5929 8.77496
solaris % server7
squareproc: thread id 4, arg = 77
sqrtproc: thread id 4, arg = 77