Browse Source

Fix possible race condition

stable
Denis Tereshkin 7 years ago
parent
commit
f45cf72c13
  1. 4
      src/ATrade/Driver/Real/QuoteSourceThread.hs

4
src/ATrade/Driver/Real/QuoteSourceThread.hs

@ -40,13 +40,13 @@ startQuoteSourceThread ctx qsEp strategy eventChan agg tickFilter maybeSourceTim @@ -40,13 +40,13 @@ startQuoteSourceThread ctx qsEp strategy eventChan agg tickFilter maybeSourceTim
when (isNothing maybeSourceTimeframe) $ do
aggValue <- readIORef agg
case handleTick tick aggValue of
(Just bar, !newAggValue) -> writeChan eventChan (NewBar bar) >> writeIORef agg newAggValue
(Just bar, !newAggValue) -> writeIORef agg newAggValue >> writeChan eventChan (NewBar bar)
(Nothing, !newAggValue) -> writeIORef agg newAggValue
QDBar (_, bar) -> do
aggValue <- readIORef agg
when (isJust maybeSourceTimeframe) $ do
case handleBar bar aggValue of
(Just bar', !newAggValue) -> writeChan eventChan (NewBar bar') >> writeIORef agg newAggValue
(Just bar', !newAggValue) -> writeIORef agg newAggValue >> writeChan eventChan (NewBar bar')
(Nothing, !newAggValue) -> writeIORef agg newAggValue)
where
goodTick tick = tickFilter tick &&

Loading…
Cancel
Save