| 1234567891011121314151617181920212223242526272829303132333435 |
- #include "unpthread.h"
- #include "pthread07.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);
- socklen_t clilen;
- struct sockaddr *cliaddr;
- cliaddr = Malloc(addrlen);
- printf("thread %d starting\n", (int) arg);
- for ( ; ; ) {
- clilen = addrlen;
- Pthread_mutex_lock(&mlock);
- connfd = Accept(listenfd, cliaddr, &clilen);
- Pthread_mutex_unlock(&mlock);
- tptr[(int) arg].thread_count++;
- web_child(connfd); /* process request */
- Close(connfd);
- }
- }
|