Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог Coro с сохранением состояния между запускам 
:(
    Опции темы
Pilat66
Дата 22.6.2016, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.1.2009

Репутация: 1
Всего: 1



Есть имитация многозадачности/многопоточности - Coro. Мне нужно то же самое, с маленьким дополнением: надо сохранять состояние "потоков" на диске, чтобы после вылета программы (или штатной остановки) можно было бы восстановить состояние всех потоков. Нужно это для обработки входящих сообщений от оборудования. Про Ev и подобное я в курсе, это мне не подходит.
PM MAIL   Вверх
noize
Дата 2.7.2016, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: 3
Всего: 3



я бы посоветовал вам использовать внешнее быстрое хранилище, типа redis. Тут вопрос в том, какие данне надо сохранять.
PM MAIL   Вверх
Pilat66
Дата 10.7.2016, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.1.2009

Репутация: 1
Всего: 1



Цитата(noize @ 2.7.2016,  00:43)
я бы посоветовал вам использовать внешнее быстрое хранилище, типа redis. Тут вопрос в том, какие данне надо сохранять.

Я не очень понимаю как redis мне поможет для сохранения состояния потоков coro
PM MAIL   Вверх
vansevich
Дата 6.10.2016, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.10.2016

Репутация: нет
Всего: нет



Цитата

 надо сохранять состояние "потоков" на диске, чтобы после вылета программы (или штатной остановки) можно было бы восстановить состояние всех потоков

Именно состояние корутин сохранять, не имеет смысла в силу того очень сложно, так как возникают сразу вопросы,- а что делать с файловыми дескрипторами, например.
Правильнее, будет весть xlog (binlog) приложения, и писать туда информацию которая поможет восстановить состояние..

Это сообщение отредактировал(а) vansevich - 6.10.2016, 13:36
PM MAIL   Вверх
Pilat66
Дата 6.10.2016, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.1.2009

Репутация: 1
Всего: 1



И какие модули позволяют это сделать?
PM MAIL   Вверх
vansevich
Дата 6.10.2016, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.10.2016

Репутация: нет
Всего: нет



Ну поиск по metacpan подсказал Text::XLogfile, но я его не использовал, и даже не знаю работает ли он. По описанию подходит. 
Но, в тоже время xlog(журнал транзакций) в основном юзают в бд..Не уверен что лучший выбор для хранения состояния приложения.

Вообще тема сложная, сложность реализации восстановления состояния, поэтому тут надо знать, что за приложение, о чем речь, и почему например просто не хранить данные в бд.=)


Это сообщение отредактировал(а) vansevich - 6.10.2016, 23:35
PM MAIL   Вверх
Pilat66
Дата 7.10.2016, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.1.2009

Репутация: 1
Всего: 1



Мне нужно готовое решение. Доделать Coro не представляется возможным, а самопальный вариант я уже сделал. Получилось похожее на Coro, но чисто перловой решение. Проблему с дескрипторами решил просто - открываю базу данных заново после запуска, а как ещё? Coro выбрано не случайно - в нём много чего сделано, в отличии от моей суперкооперативной многозадачности.
PM MAIL   Вверх
vansevich
Дата 7.10.2016, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.10.2016

Репутация: нет
Всего: нет



Такого решения нет, к сожалению
PM MAIL   Вверх
Pilat66
Дата 7.10.2016, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 27.1.2009

Репутация: 1
Всего: 1



Это довольно странно, так как в перле есть довольно специфический оператор goto , который позволяет именно на коленке сделать многозадачность с сохранением состояния.
PM MAIL   Вверх
vansevich
Дата 7.10.2016, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 6.10.2016

Репутация: нет
Всего: нет



Мне кажется, вы немного путаете теплое с мягким, goto оператор безусловного перехода, да через него можно реализовать как бы "корутины". Но сохранение состояния именно корутин, это совсем другая вещь. Готового решения нет. Ну или подумайте как можно обойтись без этого.
Не зная какая у вас исходная задача, сложно что либо предложить Вам.
В первом сообщении Вы писали про EV - ну, он тут вообще не причем, это просто ивентлуп
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1417 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.