Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature request: optionally kill thread when its Async goes out of scope #106

Open
jberryman opened this issue Feb 3, 2020 · 1 comment

Comments

@jberryman
Copy link

I wanted to play with an API that cleans up a thread automatically when its handle goes out of scope. This would probably be an error condition (or bug) and so we'd usually want to log when this happens. The idea being to protect from leaks, while not being restricted to withAsync.

I thought I could do this myself with a weak reference and finalizer on the ThreadId from the Async, but this isn't safe since I also don't want the thread to be killed until the _asyncWait action becomes unreachable too.

I suppose that STM action would have to touch the ThreadId in some way, rather than just being readTMVar, and then the finalizer could be safely attached to the ThreadId?

@simonmar
Copy link
Owner

simonmar commented Feb 6, 2020

Firstly, if the thread is running then it won't be considered dead by the GC because the run queue is a source of roots, so this would only work for blocked threads.

If this is OK, then I guess your idea of touching the ThreadId from the _asyncWait action would be one way to do it, I can't think of a better way off hand.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants