-
Notifications
You must be signed in to change notification settings - Fork 51
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
Make API match what's in our SC Ads #119
Comments
As another note, we need a clean way to express "async" versions of We could do just: void forall_async(...); Or, it would be cool if we could get away with template tags: forall<async>();
forall<async,public>(); I'm not sure how to implement this, it'd take some clever templating. Maybe something like: enum SyncMode {
blocking;
async;
};
template< SyncMode S = blocking >
void forall(/*...*/) { /*...*/ } Note: for the syntax shown above, it can't be |
To me the difference in API syntax is not huge, so I think it comes down to whether the implementation code is easier to maintain by using template tags to enumerate the combinations. |
I guess I'm thinking it's useful for maintenance once you have more than one. I hashed out a test: https://gist.github.com/bholt/7539752#file-spawn-cpp. It also seems like it would be easier from a user perspective than remembering underscore name variants, especially if it was more universal (like if we used the same |
I like the type tags too, for the same reasons; it makes the interfaces a bit more orthogonal. This is related to the question about how to specify the right joiner. Does that need to be dynamic? Does it make sense to support multiple overlapping joiners? |
One fairly glaring problem with the Dynamic GCEs might allow us to dynamically create new GCE’s and then swap them out under the hood to make it appear like you’re getting scoped finishes. |
Specifically, make sure we have working:
The text was updated successfully, but these errors were encountered: