title: Is Mapper.Map in AutoMapper thread-safe?
body: <p>I'm looking up <a href="https://github.com/AutoMapper" rel="noreferrer">AutoMapper</a> code now (evaluating it for one of projects I'm working on), and, frankly speaking, I'm quite surprised:</p>
  
  <ul>
  <li>The library API is based on a single static access point (<code>Mapper</code> type), so generally any of its methods must be thread safe</li>
  <li>But I didn't find ANY evidence of this in code. </li>
  </ul>
  
  <p>All I was able to find is <a href="http://automapper.codeplex.com/workitem/3197" rel="noreferrer">this issue</a>, but even the statement made there seems incorrect: if <code>Map</code> doesn't use thread-safe data structures internally, it can't be considered as thread-safe as well, if I'm going to call <code>CreateMap</code> in non-concurrent context, but concurrently with <code>Map</code>.</p>
  
  <p>I.e. the only possible usage pattern of AutoMapper in e.g. ASP.NET MVC application is:</p>
  
  <pre><code>lock (mapperLock) {
      ... Mapper.AnyMethod(...) ...
  }
  </code></pre>
  
  <p>Obviously, if I'm correct, that's a huge lack.</p>
  
  <p>So I have two questions:</p>
  
  <ul>
  <li>Am I correct?</li>
  <li>If yes, what's the best alternative to AutoMapper that doesn't have this issue?</li>
  </ul>