Да, конечно, это непросто. Я обычно предполагал, что при порождении ИЛИ-группы будет создаваться некий общий объект типа Bool, который сбрасывается, когда кто-то закончит, и он всем по ссылке передается, чтобы поглядывали, и если он сброшен, то пора отменяться. Насчет вложенности особо не думал пока. Аркадий
вт, 26 мая 2020 г. в 00:07, Александр Коновалов a.v.konovalov87_AT_mail.ru < refal@botik.ru>: > Доброй ночи, Аркадий! > > В архитектуру Рефала-05, который мы тогда обсуждали на семинаре, добавить > ИЛИ-параллелизм просто не получится. Т.к. в случае ИЛИ-параллелизма нужно > будет информацию распространять обратно — от отложенной конкретизации, > которая была отменена, к вызовам функций, от которых она зависела, чтобы их > тоже отменить. А как делать это эффективно, я не представляю. Можно, > конечно, при каждой отмене задачи уведомлять все активные задачи, для > каждой из них прослеживать цепочку предков — если среди них есть отменённая > задача, то отмениться и самому. Так себе решение, но других очевидных > сравнительно эффективных подходов я не вижу. Плюс ещё нужна эффективная > реализация барьера для параллельных задач — финишную ленточку порвать может > только один, а остальные должны отмениться. > > > > С уважением, > Александр Коновалов > > > > *From:* Arkady Klimov arkady.klimov_AT_gmail.com [mailto:refal@botik.ru] > *Sent:* Monday, March 23, 2020 5:38 PM > *To:* Александр Гусев <gusev_aleksa...@mail.ru>; refal@botik.ru > *Subject:* Re: Re[2]: Семинар по метавычислениям в понедельник 2 марта > 2020 в ИПМ > > > > Я бы упомянул еще один вид параллелизма - ИЛИ-параллелизм. В строгом > смысле в рефале места для него сейчас нет. > > Было бы, если бы кроме отождествления "слева" и "справа" добавить "любое" > - подходит любой вариант > > длины открытой е-переменной. Или если ввести "машинную операцию" типа > <Map-Select tF eX> = > > применять tF к термам eX в любом порядке или параллельно, и если есть хотя > бы один, > > где результат не неуспех, то его и выбрать (любой), иначе неуспех. > > Этот вид встречается в задачах типа поиска доказательств. Также в > суперкомпиляции. > > Он не сводится к обычному И-параллелизму, поскольку в нем нужно убивать > запущенные подпроцессы, > > чего в И-параллелизме не бывает. > > Аркадий > > > > >