Leonard Lausen <leon...@lausen.nl> added the comment:
Consider a `lib = ctypes.CDLL(lib_path, ctypes.RTLD_LOCAL)` which provides APIs `lib.compute`, `lib.set_state` and a Python interface wrapping both in `def compute`, `def set_state`. Let's assume `lib.set_state` sets a thread-local state in the library implementation and further that the behaviour of `lib.compute` depends on the last call to `lib.set_state`. Users of the Python interface may call `set_state` and `compute` concurrently in coroutines. Thereby one coroutine may change the state in the library, prior to another coroutine calling `compute`. This leads to a wrong result. If `set_state` and `compute` were pure python functions, `contextvars` could be used to implement set_state and provide context-local state. Is there any existing API that can be used to call `lib.set_state` on context changes? If so, please let me know. If not, would it make sense to extend `contexvars` to allow users to configure that `lib.set_state` is called on context change? ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue39660> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com