Size: a a a

2020 November 24

AV

Alexander Vershilov in Haskell
createMinPool Config{..} alloc free = do
 cnt <- newIORef 0
 mdo
   let wrappedAlloc = mask_ (alloc >>= \x -> modifyIORef' cnt succ >> pure x)
       wrappedFree x = free x finally modifyIORef' cnt pred finally (restart pool cnt)
   pool <- createPool
      wrappedAlloc
      wrappedFree
      configStripes
      (realToFrac configIdleTime)
      (configResourcePerStripe)
   pure pool
 where
   configMinResources = 5
   restart pool cnt = mask_ $ do
     n <- readIORef cnt
     when (n < configMinResources) $
       withResourceLimited pool (const $ pure ())

а
придумайте пару причин почему это не взлетит?
// то что нужно делать хитрый destroyPool не в счёт
источник

MK

Maxim Koltsov in Haskell
опять mdo
источник

AV

Alexander Vershilov in Haskell
почему опять? И как тут без него?
источник

MK

Maxim Koltsov in Haskell
я ни знаю никого кроме тебя кто им пользуется)
источник

AV

Alexander Vershilov in Haskell
Я вообще странными штуками пользуюсь
источник

DI

Dmitry Ivanov in Haskell
фрпшники
источник

AV

Alexander Vershilov in Haskell
фрп не пользуюсь
источник

AV

Alexander Vershilov in Haskell
Это сложно
источник

DI

Dmitry Ivanov in Haskell
а вот mdo и mask одновременно - только он
источник

MK

Maxim Koltsov in Haskell
createPool откуда?
источник

AV

Alexander Vershilov in Haskell
resource-pool
источник

MK

Maxim Koltsov in Haskell
из обычного пула?
источник

AV

Alexander Vershilov in Haskell
ванильный
источник

AV

Alexander Vershilov in Haskell
так я ещё забыл replicateM_ configMinReousources $ withResourceLimited pool (const $ pure ()) перед возвратом
источник

MK

Maxim Koltsov in Haskell
я не понимаю что делает restart...
источник

AV

Alexander Vershilov in Haskell
если у нас меньше n соединений, то создаёт ещё одно
источник

MK

Maxim Koltsov in Haskell
а, хм
источник

MK

Maxim Koltsov in Haskell
а withResourceLimited откуда?
источник

AV

Alexander Vershilov in Haskell
МОЁ
источник

YS

Yan Shkurinskiy in Haskell
мне кажется код @qnikst можно узнать
источник