I have been researching threading and come across several websites which all say contradicting statements about which and how many thread models exist. Some websites say there are only three: 1:1, M:1 and M:M, while others say the three are 1:1, M:1 and hybrid (M:N). Still others say there are four types, including 2-level threading?

Google and stack exchange haven't been able to come up with a clear answer as of yet. I was hoping for someone to shed some light on this situation, namely the difference (i.e pros & cons) between M:M, M:N and two-level threading types.


Go to a website selling computers (or phones). Check how many cores the computers have, and whether they support hyper threading. So there you get the number how many threads can actually run at the same time.

On the other side, your software can use a single active thread, or 100 active threads. Some software can actually make use of many threads, other software can't. Your computer however can run more than one software at the same time, so there will be more active threads.

So everything is M:N. M = 1 or N = 1 is possible but rare. If M < N then some cores are unused and might as well not be there. If M > N then at any point in time, at most N of the M threads are running. And M changes all the time.

  • $\begingroup$ Thank you for the answer, however this is not exactly what I was looking for. I really would like someone to clear up the difference between M:M, hybrid and two-level thread models $\endgroup$ – Cobie Fisher Sep 11 '18 at 10:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.