{"action":"opened","issue":{"url":"https://api.github.com/repos/DatenMetzgerX/parallel.es/issues/78","repository_url":"https://api.github.com/repos/DatenMetzgerX/parallel.es","labels_url":"https://api.github.com/repos/DatenMetzgerX/parallel.es/issues/78/labels{/name}","comments_url":"https://api.github.com/repos/DatenMetzgerX/parallel.es/issues/78/comments","events_url":"https://api.github.com/repos/DatenMetzgerX/parallel.es/issues/78/events","html_url":"https://github.com/DatenMetzgerX/parallel.es/issues/78","id":186068523,"number":78,"title":"Recursion Support","user":{"login":"DatenMetzgerX","id":1203881,"avatar_url":"https://avatars.githubusercontent.com/u/1203881?v=3","gravatar_id":"","url":"https://api.github.com/users/DatenMetzgerX","html_url":"https://github.com/DatenMetzgerX","followers_url":"https://api.github.com/users/DatenMetzgerX/followers","following_url":"https://api.github.com/users/DatenMetzgerX/following{/other_user}","gists_url":"https://api.github.com/users/DatenMetzgerX/gists{/gist_id}","starred_url":"https://api.github.com/users/DatenMetzgerX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DatenMetzgerX/subscriptions","organizations_url":"https://api.github.com/users/DatenMetzgerX/orgs","repos_url":"https://api.github.com/users/DatenMetzgerX/repos","events_url":"https://api.github.com/users/DatenMetzgerX/events{/privacy}","received_events_url":"https://api.github.com/users/DatenMetzgerX/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2016-10-29T09:13:44Z","updated_at":"2016-10-29T09:13:44Z","closed_at":null,"body":"This requires #55 and describes a potential approach. \r\nThe idea is that recursion functions like QuickSort can be implemented with a manual or automatic task scheduling similar to what the TPL supports (ContinueWith).\r\n\r\nThis requires that a task executed in the worker can schedule workers itself. requiring the parallel library again is possible, however, each worker uses than its own thread pool that spawns new workers... \r\n\r\nTo avoid this, a centralization of the thread pool information idea is. \r\n\r\nA potential solution is to use [SharedWorkers](https://developer.mozilla.org/de/docs/Web/API/SharedWorker) instead (if supported) allowing a communication between the workers. A sharred worker can be identified by a [name](https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker/SharedWorker). To maintain the Worker-State information (needed by the thread pool), a [shared array buffer](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) can be used (again, if supported). This buffer maintains which worker currently is idle and which are not (if work stealing is used, potentially how many tasks are queued in this task).\r\n\r\nIf SharedArrayBuffers are not supported, a main worker is needed that plays the roll of a master / coordinator and is just responsible to answer a worker which next worker is free (if any). \r\n\r\nIf neither of both technologies are supported, Recursion might still be possible but always requires a round trip back to the main thread.\r\n\r\nThis enables Continuation Support, Recursion Support and potentially a work stealing thread pool"}}
{"actor":{"display_login":"DatenMetzgerX"}}