{"action":"created","issue":{"url":"https://api.github.com/repos/domokit/mojo/issues/350","labels_url":"https://api.github.com/repos/domokit/mojo/issues/350/labels{/name}","comments_url":"https://api.github.com/repos/domokit/mojo/issues/350/comments","events_url":"https://api.github.com/repos/domokit/mojo/issues/350/events","html_url":"https://github.com/domokit/mojo/issues/350","id":98878964,"number":350,"title":"Provide a more efficient \"WaitMany\" API.","user":{"login":"akmistry","id":524140,"avatar_url":"https://avatars.githubusercontent.com/u/524140?v=3","gravatar_id":"","url":"https://api.github.com/users/akmistry","html_url":"https://github.com/akmistry","followers_url":"https://api.github.com/users/akmistry/followers","following_url":"https://api.github.com/users/akmistry/following{/other_user}","gists_url":"https://api.github.com/users/akmistry/gists{/gist_id}","starred_url":"https://api.github.com/users/akmistry/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akmistry/subscriptions","organizations_url":"https://api.github.com/users/akmistry/orgs","repos_url":"https://api.github.com/users/akmistry/repos","events_url":"https://api.github.com/users/akmistry/events{/privacy}","received_events_url":"https://api.github.com/users/akmistry/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/domokit/mojo/labels/enhancement","name":"enhancement","color":"bfe5bf"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-08-04T03:11:28Z","updated_at":"2015-08-04T16:11:28Z","closed_at":null,"body":"MojoWaitMany provides the ability to wait for several handles, however, it does so by providing every handle on every wait. This results in MojoWaitMany having complexity linear to the number of handles being waited on. If there are 1000s of handles being waited on, this can slow down the wait significantly. An OS-level equivalent would be the select syscall, with all the same scaling issues. The effect of this on the C++ bindings can be seen by running MojoBindingsPerftest.\r\n\r\nThis bug requests a more efficient wait API that scales better to 1000s of handles. Two possible approaches could be:\r\n1. An epoll-like API with add-handle/remove-handle/wait functions.\r\n2. An async wait, such as exposing mojo::system::Core::AsyncWait."},"comment":{"url":"https://api.github.com/repos/domokit/mojo/issues/comments/127661769","html_url":"https://github.com/domokit/mojo/issues/350#issuecomment-127661769","issue_url":"https://api.github.com/repos/domokit/mojo/issues/350","id":127661769,"user":{"login":"j9brown","id":102276,"avatar_url":"https://avatars.githubusercontent.com/u/102276?v=3","gravatar_id":"","url":"https://api.github.com/users/j9brown","html_url":"https://github.com/j9brown","followers_url":"https://api.github.com/users/j9brown/followers","following_url":"https://api.github.com/users/j9brown/following{/other_user}","gists_url":"https://api.github.com/users/j9brown/gists{/gist_id}","starred_url":"https://api.github.com/users/j9brown/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j9brown/subscriptions","organizations_url":"https://api.github.com/users/j9brown/orgs","repos_url":"https://api.github.com/users/j9brown/repos","events_url":"https://api.github.com/users/j9brown/events{/privacy}","received_events_url":"https://api.github.com/users/j9brown/received_events","type":"User","site_admin":false},"created_at":"2015-08-04T16:11:28Z","updated_at":"2015-08-04T16:11:28Z","body":"+1 to adding some kind of WaitSet object similar to epoll sets.\n\nOn Mon, Aug 3, 2015, 8:11 PM Anand K Mistry <notifications@github.com>\nwrote:\n\n> MojoWaitMany provides the ability to wait for several handles, however, it\n> does so by providing every handle on every wait. This results in\n> MojoWaitMany having complexity linear to the number of handles being waited\n> on. If there are 1000s of handles being waited on, this can slow down the\n> wait significantly. An OS-level equivalent would be the select syscall,\n> with all the same scaling issues. The effect of this on the C++ bindings\n> can be seen by running MojoBindingsPerftest.\n>\n> This bug requests a more efficient wait API that scales better to 1000s of\n> handles. Two possible approaches could be:\n> 1. An epoll-like API with add-handle/remove-handle/wait functions.\n> 2. An async wait, such as exposing mojo::system::Core::AsyncWait.\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/domokit/mojo/issues/350>.\n>\n"}}