title: Why might threads be considered "evil"?
body: <p>I was reading the <a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf" rel="noreferrer">SQLite FAQ</a>, and came upon this passage:</p>
  
  <blockquote>
    <p><a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf" rel="noreferrer">Threads are evil.</a> Avoid them. </p>
  </blockquote>
  
  <p>I don't quite understand the statement "Thread are evil". If that is true, then what is the alternative?</p>
  
  <p>My superficial understanding of threads is:</p>
  
  <ul>
  <li>Threads make concurrence happen. Otherwise, the CPU horsepower will be wasted, waiting for (e.g.) slow I/O.</li>
  <li>But the bad thing is that you must synchronize your logic to avoid contention and you have to protect shared resources. </li>
  </ul>
  
  <p><strong>Note:</strong> As I am not familiar with threads on Windows, I hope the discussion will be limited to Linux/Unix threads.</p>