Я слепил модель и написал для неё интерпретатор параметризованный 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
                  
                  
                  }
                  
                  
                  
                  
                  
                  который делает необходимую синхронизацию. Его можно как-то переиспользовать для ФТ реализации? Или тут нужно в другую сторону посмотреть?
                  
                  
                
Мвар или семафор для синхронизации
Обсуждают сегодня