title: Threads vs Async on threaded languages such as C#?
body: <p>I was looking at the difference between JavaScript's single-threaded asynchronous processing and C#'s threaded approach to asynchronous processing as described here (<a href="https://stackoverflow.com/questions/21336976/node-js-vs-async-await-in-net">Node.js vs Async/await in .net</a>). It seems to me that 'asynchronous coding' could sum up the entirety of 'using threads' in a language like C# or Java. Is this the case?</p>
  
  <p>My understanding of threads is code that executes on 2 separate processors at the same time, which as far as I can see involves:</p>
  
  <ol>
  <li>Firing off separate processes</li>
  <li>Asynchronous task processing, on a 'now' and 'later' basis</li>
  <li>Splitting tasks into partial tasks that operate on separate threads and then combining the results</li>
  </ol>
  
  <p>It seems to me that point 2/3 are effectively handling asynchronous code in exactly the same logical manner that I would have with JavaScript. Though I (think I) understand that there are differences in terms of 'context' which would need to be added to a new thread? But it seems like async - await abstracts that if they don't...)</p>
  
  <p>Aside from what I've mentioned, what is the difference from a JavaScript developer's point of view in terms of handling asynchronous code? From my inexperienced perspective with C#, it seems that asynchronous coding in JavaScript has many similarities to multi-threaded coding in C#.. Though with different use-cases... The one difference I can see is that code in JavaScript never executes simultaneously with other code, whereas in C# it might - is this where the idea of 'thread safety' comes from? i.e. a thread's state can't be altered by operations on another thread (I think)... </p>
  
  <p>Is this correct? If not, what are the differences?</p>