сбилась ссылка
каким образом?
https://pastebin.com/eH6B9Ez2 Даже на одном треде проблемы
потому, что в том куске кода, что ты прислал, лично я проблемы с изменением pfd не вижу. Проблема комплексная, что ты делаешь ВНЕ данной функции и КАК, и то делаешь ВНУТРИ. По куску кода, лично мне, не ясно.
я прислал выше весь кусок кода и где используется fds Больше никто не изменяет
ну как минимум: 34 - строка, цикл по fds. 40 - строка переход в handleClientConnection 48 - строка переход в handleClientInput 82 - строка изменяешь fds через push_back, происходит реаллокация
не вижу тут конфликтов разве что реаллокация
ты изменяешь вектор по которому итерируешься
не совсем poll же копирует себе fds до таймаута?
for (auto &fd: fds) в теле цикла зовётся handleClientConnection и другие, которые в этот же fds начинают что-то там добавлять/удалять
и как решить проблему?
ну, так реаллокация чё делает? берёт твой кусок памяти и копирует в другое место с запасом
1000500 вариантов решения, тебе какой?
не делать вещи, от которых всё портится
скопируй вектор, итерируйся по одной копии, модифицируй другую
ну 1. Вчитаться и переосмыслить код 2. Передавать по значению 3. Использовать другую структуру данных, которая не перемещает внутрянку(см. list)
Обсуждают сегодня