nim-chronos icon indicating copy to clipboard operation
nim-chronos copied to clipboard

all API raise OSError due to lazy `getDispatcher` initialization

Open arnetheduck opened this issue 4 years ago • 0 comments

getDispatcher does lazy initialization - this means it's not possible to use the chronos API safely without introducing error handling in every call because it may raise an OSError (and thus has the raises OSError effect) - even calls that "logically" should not fail, such as setTimer that merely adds a timer to the loop may fail on this initialization.

It would be good to be able to do all initialization during application startup such that it can happen in a "controlled" manner and that subsequent uses of the API are safe from errors of this kind.

Options discussed:

  • introduce init and raise Defect from getDispatcher
    • users must manually initialize chronos on every thread before using any of the calls which is not obvious from the API
  • implement https://github.com/status-im/nim-chronos/issues/17
    • risk that dispatcher gets used from different threads even though it's not adequately prepared
    • inconvenient to pass dispatcher around

arnetheduck avatar Apr 23 '20 11:04 arnetheduck