Я пытаюсь сделать простую клиент-серверную программу чата.На стороне клиента я раскручиваю другой поток, чтобы прочитать любые поступающие данные с сервера.Проблема в том, что я хочу аккуратно прекратить этот второй поток, когда человек выходит из основного потока.Я пытался использовать разделяемую переменную 'running' для завершения, проблема в том, что команда socket read () является командой блокировки, поэтому, если я делаю в то время как (running == 1), сервер должен что-то отправить до того, как чтение вернетсяи условие while может быть проверено снова.Я ищу метод (только с обычными сокетами Unix) для выполнения неблокирующего чтения, в основном, будет работать некоторая форма peek (), поскольку я могу постоянно проверять цикл, чтобы убедиться, что я закончил.
Цикл потока чтения находится ниже, сейчас у него нет мьютекса для общих переменных, но я планирую добавить, что позже не волнуйтесь!;)
void *serverlisten(void *vargp)
{
while(running == 1)
{
read(socket, readbuffer, sizeof(readbuffer));
printf("CLIENT RECIEVED: %s\n", readbuffer);
}
pthread_exit(NULL);
}