{"action":"opened","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/10879","repository_url":"https://api.github.com/repos/dotnet/roslyn","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/10879/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/10879/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/10879/events","html_url":"https://github.com/dotnet/roslyn/issues/10879","id":151064376,"number":10879,"title":"Parallel programming feature without blocks","user":{"login":"GLeBaTi","id":693132,"avatar_url":"https://avatars.githubusercontent.com/u/693132?v=3","gravatar_id":"","url":"https://api.github.com/users/GLeBaTi","html_url":"https://github.com/GLeBaTi","followers_url":"https://api.github.com/users/GLeBaTi/followers","following_url":"https://api.github.com/users/GLeBaTi/following{/other_user}","gists_url":"https://api.github.com/users/GLeBaTi/gists{/gist_id}","starred_url":"https://api.github.com/users/GLeBaTi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GLeBaTi/subscriptions","organizations_url":"https://api.github.com/users/GLeBaTi/orgs","repos_url":"https://api.github.com/users/GLeBaTi/repos","events_url":"https://api.github.com/users/GLeBaTi/events{/privacy}","received_events_url":"https://api.github.com/users/GLeBaTi/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-04-26T07:35:42Z","updated_at":"2016-04-26T07:35:42Z","closed_at":null,"body":"What if you do parallel in this form: enter image description here\r\n![e1zkb 1](https://cloud.githubusercontent.com/assets/693132/14810234/7d5ba2a6-0b9a-11e6-9e49-10a2ca9f191f.png)\r\n\r\nThe idea is that all methods can be run in parallel **without** any lock, mutex ... and **without** think about it\r\n\r\n> Given (collcted in compile time):\r\n> \r\n> - General list of changabled objects (GLCO)\r\n> - Job1 with its list of changabled objects (c LCO)\r\n> - Job2 with its list of changabled objects (c LCO)\r\n\r\n1. When you start Job1, recorded in the GLCO <- LCO of Job1 (with submethods)\r\n2. When you start Job2, the LCO of Job2(with submethods) is compared with GLCO.\r\n3. If there is no match, then run Job2, if so, when waiting for a match will be removed from GLCO(ie Job1 end)\r\n\r\nExample:\r\n\r\n```\r\nJob job1 = parallel BMW.Main() \r\nJob job2= parallel BMW.Method1()\r\n```"}}