On Thu, Dec 22, 2011 at 3:02 AM, Marc Lehmann <schm...@schmorp.de> wrote: > With threads, you can avoid swapping some registers, most notably the MMU > registers, which are often very costly to swap, to the extent that a number > of cpus even have extra support for multiple "contexts". > >> Are you talking about hardware simultaneous multithreading >> (http://en.wikipedia.org/wiki/Simultaneous_multithreading), e.g. >> HyperThreading? > > No, just distant history, try > http://en.wikipedia.org/wiki/Thread_%28computer_science%29 if you like > wikipedia:
According to that same Wikipedia article, some CPUs have multiple register files in order to reduce thread switching time, i.e. what you describe as extra support for multiple contexts. According to the article, that idea came in the late 1990s to x86 desktop CPUs when Intel introduced HyperThreading. So it looks like we're talking about the same thing. >> Let me get this right before continuing the discussion. Are you saying >> that this program (in pseudo code): > > Thats not all I am saying, but I would say that for these programs, yes. I agree that threads tend to be overhyped compared to processes, but I'm here to learn the truth, which is why I'm asking these things. It's true that the second program adds an extra layer of indirection (the 'data' variable). However: 1. If the data is accessed frequently then both the pointer and the ThreadData that it points to should be cached by the CPU cache, making the indirection very cheap. 2. Suppose the system has two cores and N = 4, so two processes or two threads will be scheduled on a single core. A context switch to another thread on the same core should be cheaper because 1) the MMU register does not have to swapped and 2) no existing TLB entries have to be invalidated. I think that (1) and (2) are sufficiently beneficial that the program should run faster overall, even with the extra indirection. Do you not think so? -- Phusion | Ruby & Rails deployment, scaling and tuning solutions Web: http://www.phusion.nl/ E-mail: i...@phusion.nl Chamber of commerce no: 08173483 (The Netherlands) _______________________________________________ libev mailing list libev@lists.schmorp.de http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev