Size: a a a

2020 June 15

AH

Ayrat Hudaygulov in F# Chat
(сдержался и ничего не написал!!11)
источник

RM

Roman Melnikov in F# Chat
Дмитрий Башинский
привет!
Кто то использовал Orleans + F#?
Возможно ли это?
Мешает ли кодогенерация C# из Orleans F#-пу?
В гугле находил только что то компромисное "OrleanAkka"
Кто то пробовал OrleanAkka?
Писал все на чистом F# + была пара заготовок, орлеанкку не бери
источник

RM

Roman Melnikov in F# Chat
Дмитрий Башинский
привет!
Кто то использовал Orleans + F#?
Возможно ли это?
Мешает ли кодогенерация C# из Orleans F#-пу?
В гугле находил только что то компромисное "OrleanAkka"
Кто то пробовал OrleanAkka?
источник

RM

Roman Melnikov in F# Chat
Дмитрий Башинский
привет!
Кто то использовал Orleans + F#?
Возможно ли это?
Мешает ли кодогенерация C# из Orleans F#-пу?
В гугле находил только что то компромисное "OrleanAkka"
Кто то пробовал OrleanAkka?
https://github.com/Neftedollar/fsharp-orleans-scaffold/blob/master/Server/Server.fsproj#L21
обрати внимание на специальный пакет котогенерации
источник

RM

Roman Melnikov in F# Chat
И подключение этой самой котогенерации
https://github.com/Neftedollar/fsharp-orleans-scaffold/blob/master/Server/Program.fs#L24
источник

ДБ

Дмитрий Башинский... in F# Chat
спасибо за пример
источник

RM

Roman Melnikov in F# Chat
Николай
это входит в определение "актора"?
"Актор является вычислительной сущностью, которая в ответ на полученное сообщение может одновременно:

отправить конечное число сообщений другим акторам;
создать конечное число новых акторов;
выбрать поведение, которое будет использоваться при обработке следующего полученного сообщения."

Вот создать не получается, потому что грейны по концепции есть всегда. Но фактически, актор создается, если его не было при получении сообщения.
Так что формально не актор, а на самом деле там все же актор. Абстракция протекает довольно быстро.
источник

RM

Roman Melnikov in F# Chat
Николай
Хм, ладно. Я про первый пункт думал, что актор может создать конечное число других акторов, а иерархия и управление лайфтаймом необязательны.
зис
источник

RM

Roman Melnikov in F# Chat
Ayrat Hudaygulov
это НЕ супервайзинг
супервайзинг - не обязательно часть определнеия акторов.
Ты еще скажи, что мэйлбоксы F# не акторы
потому что там нет супервайзинга
источник

VK

Vladislav Khapin in F# Chat
ну там есть inbox.Error |> Event.add
источник

VK

Vladislav Khapin in F# Chat
Кек
источник

RM

Roman Melnikov in F# Chat
Ayrat Hudaygulov
ну и тредпул неявный - актор система целая. Ну и пусть неявно создаёт акторов
ну да!
источник

RM

Roman Melnikov in F# Chat
Vladislav Khapin
ну там есть inbox.Error |> Event.add
лол
источник

VS

Vladimir Shchur in F# Chat
Ayrat Hudaygulov
ну тогда треды дотнета тоже акторы

можно вызвать ограниченное кол-во функций в других тредах
можно создать ограниченное кол-во других тредов
можно поменять код выполнеямый на текущем треде и таким образом поведение

формально условия выполнены
думаю нет) у треда нет абстракции по получению сообщения (насколько я знаю), но конечно ты можешь сделать акторов на основе тредов
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Shchur
думаю нет) у треда нет абстракции по получению сообщения (насколько я знаю), но конечно ты можешь сделать акторов на основе тредов
ты всё пропустил. Таски же
источник

VS

Vladimir Shchur in F# Chat
? как таск может послать сообщение другому таску?
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Shchur
? как таск может послать сообщение другому таску?
var superActor = Task.Run( () -> someFunc(message))

банально вызвать асинк функцию! Удобный рантайм сам создаст нам актора если его не было (тред), удобно дожидаемся ответа через await
источник

VS

Vladimir Shchur in F# Chat
ну получается ты можешь "послать" сообщение только на старте актора, а потом нет
источник

AH

Ayrat Hudaygulov in F# Chat
я могу вызвать  someFunc 100 раз и шедулер сам разложит моё сообщение по акторам (тредам) в их мейлбоксы
источник

AH

Ayrat Hudaygulov in F# Chat
Vladimir Shchur
ну получается ты можешь "послать" сообщение только на старте актора, а потом нет
я могу сказать холдмайбир и сделать через asyncEnumerable корутину которая будет йилдить стейджы выполнения пока её не попросят продолжать
источник