ESP32 отправляет UDP-пакеты с обоих ядер
Я использую AsyncUDP
в проекте ESP32, где я инициализирую AsyncUDP udpSender
и вызываю udpSender.write(sendbuffer, sendbuffer_size)
из обоих ядер с разными буферами на каждом ядре.
Одно ядро постоянно собирает данные датчика GY-91 (акселерометр/гироскоп/магнит) много раз в секунду и отправляет их через UDP несколько раз в секунду (после каждого сбора), а другое собирает некоторые другие данные, такие как температура, один раз в секунду, а также отвечает на команды, отправляемые сервером.
Поэтому я в основном использую одного отправителя на обоих ядрах и задаюсь вопросом, является ли это "потокобезопасным", если эта терминология вообще применима к этому сценарию.
Может ли это вызвать проблемы? Есть ли конкретный способ, которым это должно быть сделано? Нравится использовать семафоры?
@Daniel F, 👍1
1 ответ
Я не знаю, безопасно ли это для потоков или нет. Однако я был бы склонен играть в нее мудро и использовать очередь и уведомления.
- Создайте очередь
- Создайте поток "отправитель", который ожидает уведомления, а затем отправляет все, что находится в очереди, через UDP
- Создайте любое количество потоков "датчиков", которые помещают элементы в очередь, а затем уведомляют поток отправителя.
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
- Драйверы для чипа последовательного порта CH9102X
- Как преобразовать форматированный оператор print в строковую переменную?
- ESP32 - "Детектор Браунаута был активирован" при запуске Wi-Fi
- Питание esp32cam от аккумулятора
- Контакты RX и TX на esp32
- ESP32: отключить детектор отключения питания