Ви не увійшли.
Сторінки 1
https://github.com/slavaza/Thread Моя простая библиотека поддержки многозадачности для наименьших AVR моделей Ардуино. Реализует итеративную многозадачность с квантованием времени потоков и опросом состояния системы. Функция delay(ms) больше не блокируюшая а выполняет задержку только одной задачи. Возможно, вскоре добавят поддержку многозадачности и в официальную библиотеку HardwareSerial, но можно это сделать и самому или взять отсюда https://github.com/slavaza/ArduinoCore-avr. Мой скромный вклад в проект Ардуино.
Неактивний
Попробуем, пощупаем ...
А в чем отличие от leOS ? http://www.leonardomiliani.com/en/2012/ … r-arduino/
Неактивний
А в чем отличие от leOS?
В том, что leOS это таймер такой, запускающий подпрограммы по графику. А Thread реализует настоящую многозадачность (многопотоковость), хотя и очень упрощенно. Для Thread, накладные расходы процессорного времени на переключение задач (потоков) для AVR, при 1 мс кванте времени, составляет не больше 2%.
Неактивний
Если не сложно, можете тут описать функции библиотеки рідною мовою ...
Да, пожалуйста. Детали и использование аргументов смотрите в заголовочном файле и примере. Подробности выполнения в файле реализации.
functions
spawn(..) - создание (порождение) нового потока со своей структурой (стека-данных) состояния
и стартовой функцией
yield() - немедленное переклюние исполненения программы на следующий поток в кольце
hold() - запрещение исполенеия yield() и квантования времени выполнения потока
schedule() - разрешение функционирования yield() (точек переключения контекста выполнения)
quantize() - разрешение 1 мс-го квантования времени выполнения потока и функционирования yield()
grab(..) - реализует баръер (семафор) взаимного исключения выполнения сегментов кода
loose(.) - освобождает (устраняет) баръер, разрешая следующему потоку выйти из grab(..)
constant
MAIN - указатель на фиктивную структуру состояния корневого потока функции main()
variables
thread - динамический указатель на локальные данные потока для реализации реентерабельности
кода потока и его идентификации
Неактивний
Куда уже проще? Правда, примеров больше не помешало бы, да нет желания их делать самому. Может кто нибудь поучавствует. А на форуме застой еще до этой моей публикации начался. Да если бы только на форуме! Везде!
Неактивний
Да просто параллелизьм не шибко популярен. Все выкручиваются простой кооперативкой в лупе.) Простенько в понимании, простенько в отладке. Не?
Всему свое время. Когда понадобится разберутся. Все это не очень простенько, однако, для множества микроконтроллерных задач, не требуется полноценная динамическая ОСРВ, типа Линукс.
Неактивний
Сторінки 1