<br><br>On Tuesday, February 10, 2015, Maziar Mehrabi <<a href="mailto:maziar.mehrabi@gmail.com">maziar.mehrabi@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hi,<br><br></div>I wonder why multithreading causes latency.<br></div>My understanding is that having concurrent threads should improve performance.<br></div>Is there any explanation for this?<br><br></div>Thanks,<br><div><div><br></div></div></div></blockquote><div><br></div><div>Without any knowledge of the code in question: concurrency can increase overall throughput (for particular kinds of task) but increased latency is a common payoff.</div><div><br></div><div>Imagine each thread as a separate decoder with carefully controlled access to some common data/state. To fully decode the Nth frame probably requires at least a partial decode (possibly a complete decode) of the N-1 frame. Therefore although the decoding for the Nth frame may happen on a separate processor core, it's likely not truly independent of the other cores.</div><div><br></div><div>So if you have 4 threads, T4 is waiting on T3, which is waiting on T2 and on T1. Even though T1 may have finished frame 1, it probably can't fully decode frame 5 until 4 is available from T4...</div><div><br></div><div>But that's just my guess!<span></span></div>