-
Notifications
You must be signed in to change notification settings - Fork 3
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
[Design consideration] process_waitee #59
Comments
An additional feature of the second approach is that we could remove this from the initial paper, since it's just another class. I'll give it a try in my reference implementation. |
OTH: There has to be clear ownership of the process object, because otherwise there might be a mismatch on the |
On a related note, I don't know if you've been following this but this paper is the currently agreed design for executors that is being pushed for c++23 related to the networking TS. I don't know how much of it is implemented as of yet by Chris (I know he's tracking it) or others. http://wg21.link/p0443 -- anyway we need to fit into this. |
I just added async_wait as a member like this: https://github.com/klemens-morgenstern/process/blob/master/test/wait_exit.cpp#L33 I think we can leave it for now, but maybe mention the alternative when we discuss this. |
I have been marginally aware of this paper, but the nice thing is that we only really have to design the |
@klemens-morgenstern where would we find the writeup? |
Arrg, I responed to the wrong email, so that went to github. Will mail it out again in a minute. |
Basesd on #57 i would argue, that we need an
async_wait
functionality.One design question is if we turn the
process
into a waitable object, like so:The downside is that we need to pass the executor into the
async_wait
function, which is inconsisten with the networking TS design. Secondly, theprocess
class will need data members that hold theasync wait
implementation, currentlyasio::signal_set
andobject_handle
.Alternatively use an object holding all the asio stuff named
process_waitee
or something.The second approach has a clearer design with an io object, but has a sharing problem. That is: in order for the
process
object to have the rightexit_code
, thewaitee
would need to keep a reference to it, or make the internalexit_code
ashared_pointer
. If not, theprocess
might not only have the wrong exit code, but might also be unaware that the process ended.Thus the first approach has a slightly unusual function signature, but the second solution introduces a bunch of complexity.
The text was updated successfully, but these errors were encountered: