Тема не работает правильно в приложении чата с использованием 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, и класс расширяет поток. Я использую бесконечный цикл, в котором сообщение приходит одновременно и быстро, так что я должен сделать, чтобы решить эту проблему, пожалуйста, мне нужна помощь, потому что я новичок в темах Спасибо заранее