| 12345678910111213141516171819202122232425262728293031323334 |
- #include "unpthread.h"
- #include "pthread08.h"
- void
- thread_make(int i)
- {
- void *thread_main(void *);
- Pthread_create(&tptr[i].thread_tid, NULL, &thread_main, (void *) i);
- return; /* main thread returns */
- }
- void *
- thread_main(void *arg)
- {
- int connfd;
- void web_child(int);
- printf("thread %d starting\n", (int) arg);
- for ( ; ; ) {
- Pthread_mutex_lock(&clifd_mutex);
- while (iget == iput)
- Pthread_cond_wait(&clifd_cond, &clifd_mutex);
- connfd = clifd[iget]; /* connected socket to service */
- if (++iget == MAXNCLI)
- iget = 0;
- Pthread_mutex_unlock(&clifd_mutex);
- tptr[(int) arg].thread_count++;
- web_child(connfd); /* process request */
- Close(connfd);
- }
- }
|