serv07.lc 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* include serv07 */
  2. #include "unpthread.h"## 1 ##src/server/serv07.c##
  3. #include "pthread07.h"## 2 ##src/server/serv07.c##
  4. pthread_mutex_t mlock = PTHREAD_MUTEX_INITIALIZER;## 3 ##src/server/serv07.c##
  5. int## 4 ##src/server/serv07.c##
  6. main(int argc, char **argv)## 5 ##src/server/serv07.c##
  7. {## 6 ##src/server/serv07.c##
  8. int i;## 7 ##src/server/serv07.c##
  9. void sig_int(int), thread_make(int);## 8 ##src/server/serv07.c##
  10. if (argc == 3)## 9 ##src/server/serv07.c##
  11. listenfd = Tcp_listen(NULL, argv[1], &addrlen);## 10 ##src/server/serv07.c##
  12. else if (argc == 4)## 11 ##src/server/serv07.c##
  13. listenfd = Tcp_listen(argv[1], argv[2], &addrlen);## 12 ##src/server/serv07.c##
  14. else## 13 ##src/server/serv07.c##
  15. err_quit("usage: serv07 [ <host> ] <port#> <#threads>");## 14 ##src/server/serv07.c##
  16. nthreads = atoi(argv[argc - 1]);## 15 ##src/server/serv07.c##
  17. tptr = Calloc(nthreads, sizeof(Thread));## 16 ##src/server/serv07.c##
  18. for (i = 0; i < nthreads; i++)## 17 ##src/server/serv07.c##
  19. thread_make(i); /* only main thread returns */## 18 ##src/server/serv07.c##
  20. Signal(SIGINT, sig_int);## 19 ##src/server/serv07.c##
  21. for (;;)## 20 ##src/server/serv07.c##
  22. pause(); /* everything done by threads */## 21 ##src/server/serv07.c##
  23. }## 22 ##src/server/serv07.c##
  24. /* end serv07 */
  25. void## 23 ##src/server/serv07.c##
  26. sig_int(int signo)## 24 ##src/server/serv07.c##
  27. {## 25 ##src/server/serv07.c##
  28. int i;## 26 ##src/server/serv07.c##
  29. void pr_cpu_time(void);## 27 ##src/server/serv07.c##
  30. pr_cpu_time();## 28 ##src/server/serv07.c##
  31. for (i = 0; i < nthreads; i++)## 29 ##src/server/serv07.c##
  32. printf("thread %d, %ld connections\n", i, tptr[i].thread_count);## 30 ##src/server/serv07.c##
  33. exit(0);## 31 ##src/server/serv07.c##
  34. }## 32 ##src/server/serv07.c##