Тема не работает правильно в приложении чата с использованием C++

Я делаю клиентскую часть приложения чата, используя библиотеку boost и fltk для GUI. Я делаю класс для клиентской части и использую поток для обработки GUI от замораживания
поток для части чтения содержит бесконечный цикл, который ожидает чтения с сервера, поэтому я использовал поток для этой функции в классе клиента
код, который я использую

это поток в конструкторе client.cpp

#include "Client.h"


Client::Client(string ip, int port) :
    socket(ios),
    ep(asio::ip::address::from_string("127.0.0.1"),5002)
{
    this->ip = "127.0.0.1";
    this->port = 5002;
    socket.connect(ep);
    thread t(&Client::run,this); // here the thread
    t.detach(); // i use detach to make it run alone so my app not wait it 
}

и это функция запуска, которая имеет бесконечный цикл, ожидающий чтения с сервера и добавленный в поток, чтобы не заморозить графический интерфейс

void Client::run()
{
    while (true) {
        asio::streambuf buf;
        int read = asio::read_until(socket, buf, '\n');
        string message;
        istream in(&buf);
        getline(in, message);
        message.append("\n");
        buffer->append(message.c_str());
    }
}

проблема в том, что когда я отправляю сообщение, оно не приходит одновременно. через несколько секунд я могу отправить 4 или 5 сообщений, которые они получили вместе, а не как java, когда я создаю функцию run, и класс расширяет поток. Я использую бесконечный цикл, в котором сообщение приходит одновременно и быстро, так что я должен сделать, чтобы решить эту проблему, пожалуйста, мне нужна помощь, потому что я новичок в темах Спасибо заранее

0 ответов

Другие вопросы по тегам