int str_len = read(m_events[i].data.fd, buf, BUF_SIZE);
У меня есть это, и я читаю данные в buf, объявленный как
char buf[BUF_SIZE];
То, что я пытаюсь сделать, это то, что я пытаюсь получить данные и передать их WorkHanndler, который я определил, и не более чем просто пул потоков.
И функция
void ServerManager::addWork(int sender, char *data){
Work* work = new Work(sender, data);
m_workHandler->addWork(work);
}
Так что мне нужен указатель на символ, который указывает на данные, которые я только что прочитал. Поскольку буфер определен как массив, я не смогу передать это в функцию.
Кроме того, вы, ребята, думаете, что это хорошая идея с точки зрения дизайна сервера? Я читаю данные из буфера и не анализирую их, а просто передаю необработанные данные в пул потоков (вставляю в очередь). У пула потоков есть очередь, и пять отдельных потоков конкурируют, чтобы получить задание из очереди с блокировкой мьютекса и переменной условия. После завершения задания отдельный поток записывает результат в выходной буфер. Пожалуйста, дайте мне знать, если у него есть недостатки, и у вас, ребята, есть идея получше. Заранее спасибо.