Я слепил модель и написал для неё интерпретатор параметризованный cats.IO. Выглядит это примерно так:
case class Event(type: String, attribute: String, ...)
def eventGroup(e: Event): Int
trait Events[F[_]]{
def pollEvents(): F[Event]
def processEvent(evts: Set[Event]): F[Unit]
}
Проблема в том, что хочется сделать конкурентную обработку событий, но я не могу обрабатывать из разных потоков 2 и более евентов e с одинаковым
eventGroup(e)
.
У меня есть старый
class EventHandler {
def processEvent(e: Event): Unit
}
который делает необходимую синхронизацию. Его можно как-то переиспользовать для ФТ реализации? Или тут нужно в другую сторону посмотреть?
Мвар или семафор для синхронизации
Обсуждают сегодня