С чего вы взяли, что pthread_mutex_lock()
отвечает за использование процессора?
Используйте отладчик, чтобы узнать, что происходит.
Я предполагаю, что с вашим сокетом что-то не так, и ваш accept()
звонок не блокируется.
Проверьте возвращаемое значение / сообщение (с помощью perror()
, если вы работаете в Linux).
РЕДАКТИРОВАТЬ:
Вам нужно знать, какой фрагмент кода зацикливается, отладчик может помочь вам найти это.
У вас есть цикл while(true)
, который, скорее всего, будет отвечать за цикл enless и 100% загрузку ЦП. Все должно быть в порядке, поскольку у вас есть вызов метода accept () (здесь: newfd = accept(sock->fd,(SOCKADDR *)&newsockaddr,&tmp);
), который должен остановить поток / процесс до следующего соединения с клиентом. Но если ваш сокет инициализирован неправильно, accept()
может вернуть ошибку без ожидания.