This is my first attempt at a C implementation: https://gist.github.com/doodspav/5d96c09696fa3ef1c89b4d6426ddc338
It stores the `fd` as an atomic int, since I think threads not being able to run in parallel is an implementation detail, and I shouldn't be designing code around it? I'm not sure if all Python platforms have a C compiler that supports stdatomic, but I'll cross that bridge when I get to it. Right now `read`/`write` raise `BlockingIOError` if the `fd` is set to non-blocking, and the operation would block - I was considering adding kwargs to both operations to give the option to return `None`/`False`, but kwargs in C are annoying, so maybe at a later stage. To build: - you'll probably need a lib like `libpython3-dev` - save the gist into a file called `py_eventfd.c` - create a file called `setup.py` and paste the following into it: ```py from distutils.core import setup, Extension setup(name="eventfd", version="1.0", ext_modules=[Extension("eventfd", ["py_eventfd.c"])]) ``` - run `python3 setup.py build` and `cd b*/l*` - from there you can `import eventfd` or `from eventfd import eventfd` It should go without saying that this will only compile on Linux. _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/EUTBN5F4Q4SH33TAD7CKRKEAAIREY4B4/ Code of Conduct: http://python.org/psf/codeofconduct/