Why is it run I run the following thread code my mutex doesn't cause other incoming threads to block until the current one has finished?
Code:void *runner( void *arg) { int sleepTime =0; int get_return=-999; /*Return value for the myHTTPserverGet function*/ int server_return=-999; /*Return value for the myHTTPserverResponse function*/ int rc; struct parm *p = (void *) arg; if( (rc = pthread_mutex_lock(&mutex)) != 0) { fprintf(stderr, "Error locking the mutex\n"); fprintf(stderr, "ERRNO Value: %s\n", strerror(errno)); exit(1); } //Get the client's request if((get_return = myHTTPserverGet(p->socket, p->path, p->from, p->userAgent, &sleepTime)) < 0) { fprintf(stdout, "Trouble in myHTTPserverGet.\nReturn Value = %d\n", get_return); exit(1); } sleep(sleepTime); //Respond to the Client if((server_return =myHTTPserverResponse(p->socket, p->userAgent, get_return, p->path, sleepTime)) < 0) { fprintf(stdout, "Trouble in myHTTPserverResponse.\nReturn Value = %d\n", server_return); exit(1); } if( (rc = pthread_mutex_unlock(&mutex)) != 0) { fprintf(stderr, "Error locking the mutex\n"); fprintf(stderr, "ERRNO Value: %s\n", strerror(errno)); exit(1); } myTCPclose(p->socket); thread_count--; pthread_exit(0); }



LinkBack URL
About LinkBacks


