title: Why doesn't multithreading in C# reach 100% CPU?
body: <p>I'm working on a program that processes many requests, none of them reaching more than 50% of CPU (<strong>currently I'm working on a dual core</strong>). So I created a thread for each request, the whole process is faster. Processing 9 requests, a single thread lasts 02min08s, while with 3 threads working simultaneously the time decreased to 01min37s, but it keeps not using 100% CPU, only around 50%.</p>
  
  <p>How could I allow my program to use full processors capability?</p>
  
  <p><strong>EDIT</strong>
  The application isn't IO or Memory bounded, they're at reasonable levels all the time.</p>
  
  <p>I think it has something to do with the 'dual core' thing.</p>
  
  <p>There is a locked method invocation that every request uses, but it is really fast, I don't think this is the problem.</p>
  
  <p>The more cpu-costly part of my code is the call of a dll via COM (the same external method is called from all threads). This dll is also no Memory or IO-bounded, it is an AI recognition component, I'm doing an OCR recognition of paychecks, a paycheck for request.</p>
  
  <p><strong>EDIT2</strong></p>
  
  <p>It is very probable that the STA COM Method is my problem, I contacted the component owners in order to solve this problem.</p>