|
Модераторы: korob2001, ginnie |
|
Pilat66 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 27.1.2009 Репутация: 1 Всего: 1 |
Есть имитация многозадачности/многопоточности - Coro. Мне нужно то же самое, с маленьким дополнением: надо сохранять состояние "потоков" на диске, чтобы после вылета программы (или штатной остановки) можно было бы восстановить состояние всех потоков. Нужно это для обработки входящих сообщений от оборудования. Про Ev и подобное я в курсе, это мне не подходит.
|
|||
|
||||
noize |
|
|||
5.18.2 Профиль Группа: Участник Сообщений: 89 Регистрация: 10.7.2010 Где: СПб Репутация: 3 Всего: 3 |
я бы посоветовал вам использовать внешнее быстрое хранилище, типа redis. Тут вопрос в том, какие данне надо сохранять.
|
|||
|
||||
Pilat66 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 27.1.2009 Репутация: 1 Всего: 1 |
Я не очень понимаю как redis мне поможет для сохранения состояния потоков coro |
|||
|
||||
vansevich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2016 Репутация: нет Всего: нет |
Именно состояние корутин сохранять, не имеет смысла в силу того очень сложно, так как возникают сразу вопросы,- а что делать с файловыми дескрипторами, например. Правильнее, будет весть xlog (binlog) приложения, и писать туда информацию которая поможет восстановить состояние.. Это сообщение отредактировал(а) vansevich - 6.10.2016, 13:36 |
|||
|
||||
Pilat66 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 27.1.2009 Репутация: 1 Всего: 1 |
И какие модули позволяют это сделать?
|
|||
|
||||
vansevich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2016 Репутация: нет Всего: нет |
Ну поиск по metacpan подсказал Text::XLogfile, но я его не использовал, и даже не знаю работает ли он. По описанию подходит.
Но, в тоже время xlog(журнал транзакций) в основном юзают в бд..Не уверен что лучший выбор для хранения состояния приложения. Вообще тема сложная, сложность реализации восстановления состояния, поэтому тут надо знать, что за приложение, о чем речь, и почему например просто не хранить данные в бд.=) Это сообщение отредактировал(а) vansevich - 6.10.2016, 23:35 |
|||
|
||||
Pilat66 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 27.1.2009 Репутация: 1 Всего: 1 |
Мне нужно готовое решение. Доделать Coro не представляется возможным, а самопальный вариант я уже сделал. Получилось похожее на Coro, но чисто перловой решение. Проблему с дескрипторами решил просто - открываю базу данных заново после запуска, а как ещё? Coro выбрано не случайно - в нём много чего сделано, в отличии от моей суперкооперативной многозадачности.
|
|||
|
||||
vansevich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2016 Репутация: нет Всего: нет |
Такого решения нет, к сожалению
|
|||
|
||||
Pilat66 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 27.1.2009 Репутация: 1 Всего: 1 |
Это довольно странно, так как в перле есть довольно специфический оператор goto , который позволяет именно на коленке сделать многозадачность с сохранением состояния.
|
|||
|
||||
vansevich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2016 Репутация: нет Всего: нет |
Мне кажется, вы немного путаете теплое с мягким, goto оператор безусловного перехода, да через него можно реализовать как бы "корутины". Но сохранение состояния именно корутин, это совсем другая вещь. Готового решения нет. Ну или подумайте как можно обойтись без этого.
Не зная какая у вас исходная задача, сложно что либо предложить Вам. В первом сообщении Вы писали про EV - ну, он тут вообще не причем, это просто ивентлуп |
|||
|
||||
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |