{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/docs/issues/4973","repository_url":"https://api.github.com/repos/dotnet/docs","labels_url":"https://api.github.com/repos/dotnet/docs/issues/4973/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/docs/issues/4973/comments","events_url":"https://api.github.com/repos/dotnet/docs/issues/4973/events","html_url":"https://github.com/dotnet/docs/issues/4973","id":316096657,"number":4973,"title":"New topics: A guided tour of the Task Asynchronous Protocol (TAP)","user":{"login":"BillWagner","id":493969,"avatar_url":"https://avatars2.githubusercontent.com/u/493969?v=4","gravatar_id":"","url":"https://api.github.com/users/BillWagner","html_url":"https://github.com/BillWagner","followers_url":"https://api.github.com/users/BillWagner/followers","following_url":"https://api.github.com/users/BillWagner/following{/other_user}","gists_url":"https://api.github.com/users/BillWagner/gists{/gist_id}","starred_url":"https://api.github.com/users/BillWagner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BillWagner/subscriptions","organizations_url":"https://api.github.com/users/BillWagner/orgs","repos_url":"https://api.github.com/users/BillWagner/repos","events_url":"https://api.github.com/users/BillWagner/events{/privacy}","received_events_url":"https://api.github.com/users/BillWagner/received_events","type":"User","site_admin":false},"labels":[{"id":213467664,"url":"https://api.github.com/repos/dotnet/docs/labels/discussion","name":"discussion","color":"e6e6e6","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2018-04-20T01:43:18Z","updated_at":"2018-04-22T07:53:14Z","closed_at":null,"author_association":"MEMBER","body":"Async programming is a complicated topic. While `async`, `await` and the `Task` based protocols do a lot to make it more approachable, as developers get beyond the basic scenarios. MicrosoftDocs/azure-docs#5963 has a lengthy discussion that surfaces many of the questions developers have about async and await:\r\n\r\n1. The distinctions between a synchronous method that returns an awaitable object (like `Task`) and an async method is subtle. Developers can be confused about when the `async` modifier is needed. Developers have concerns about possible performance implications of the async state machine.\r\n1. Asynchronous programming and multi-threaded programming are related concepts. The nuances cause confusion for developers. Task based asynchrony vs. TPL (Task Parallel Library) vs. Threads. Developers need more clarity on the distinction between these tools and the scenarios they target.\r\n1. More on async vs. parallel: Developers need more guidance on how async can increase throughput and efficient use of the threadpool resources.\r\n1. `SynchronizationContext` is not needed for basic scenarios, but surfaces in many intermediate and advanced uses. Developers need more tutorials that show how this is used.\r\n1. While on the subject of `SynchronizationContext`, developers have questions on context affinity and when `ConfigureAwait` is needed.\r\n\r\nWe have a topic on [async and await](https://docs.microsoft.com/dotnet/csharp/programming-guide/concepts/async/) and another section on [async concepts](https://docs.microsoft.com/dotnet/csharp/programming-guide/concepts/async/). Some of the above topics are covered there, but may not be surfaced as well as needed.\r\n\r\nI've added the discussion label to this issue. What else regarding async isn't covered yet that should be?  As you comment, note that there are other issues [related to async docs](https://github.com/dotnet/docs/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+async) already created.\r\n"},"comment":{"url":"https://api.github.com/repos/dotnet/docs/issues/comments/383362751","html_url":"https://github.com/dotnet/docs/issues/4973#issuecomment-383362751","issue_url":"https://api.github.com/repos/dotnet/docs/issues/4973","id":383362751,"user":{"login":"Mike-EEE","id":2931376,"avatar_url":"https://avatars2.githubusercontent.com/u/2931376?v=4","gravatar_id":"","url":"https://api.github.com/users/Mike-EEE","html_url":"https://github.com/Mike-EEE","followers_url":"https://api.github.com/users/Mike-EEE/followers","following_url":"https://api.github.com/users/Mike-EEE/following{/other_user}","gists_url":"https://api.github.com/users/Mike-EEE/gists{/gist_id}","starred_url":"https://api.github.com/users/Mike-EEE/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Mike-EEE/subscriptions","organizations_url":"https://api.github.com/users/Mike-EEE/orgs","repos_url":"https://api.github.com/users/Mike-EEE/repos","events_url":"https://api.github.com/users/Mike-EEE/events{/privacy}","received_events_url":"https://api.github.com/users/Mike-EEE/received_events","type":"User","site_admin":false},"created_at":"2018-04-22T07:53:14Z","updated_at":"2018-04-22T07:53:14Z","author_association":"NONE","body":"Wow, did the venerable @davidfowl just ghost this thread?  I thought what he provided was valuable.  FWIW, I am also interested in running ASP.NET Core performance metrics in regards to eliding at scale.  I would greatly appreciate any pointers in the right direction to start hunting this down."}}
{"actor":{"display_login":"Mike-EEE"}}