You can use dual processors with regular mame, but you won't get any added benefit... Advancemame (linux version?) supports SMP, but I don't think you'll get the "double" speed/power boost you are thinking...
With AdvanceMame, I think the emulation can be on one CPU, and the "extra stuff", like reading inputs, video stretching, etc, can be on another. However, since most of the slow down is in the emulation, you won't get very big speed ups.
Since a lot of the emulation code is very timing sensitive, it's difficult to architecture (as a verb) the code to be able to take full advantage of dual processor//SMP... I'm sure someone can provide more detail as to why, but believe me, you don't want it... =)
You pretty much got it all. Including the don't want part, but here you go anyway.
To get the best speed out of multithreading is let the different threads (CPUs) do stuff that do not depend on what the other threads do. If one has to wait to another to finish, it's "wasting" time. If one thread should wait for another to finish but doesn't messes up the emulation (if not crash the computer). But adding the code to support waiting actually adds overhead.
The arcade hardware and software were designed around the fact that parts 1, 2, & 4 do exactly X things while part 3 does exactly X/2 things in the same fraction of a second with no waiting anywhere. The machine was timed to a Tee, so the parts could run free at "full speed". If the timing is off on the arcade (example, replace a clock that controls timing of half the parts with a differnt speed one while the other clock stays the same), don't expect it to run correctly if at all. If the timing is off in the emulation, don't expect it to run correctly either.
With mame emulating up to 7 CPUs + sound card + video card + memory + other stuff at once, and hundreds of different CPUs, MPUs, DSPs, GPUs, ect for the thousands of games, it's impossible to match the timing without a
lot of waiting at least somewhere (optimized for one system) if not everywhere (averaged the waiting).
Add that 99% of PCs have one CPU; the waiting overhead will kill all the games's speeds on all those computers.
(I haven't even touched half the issues.)
But finally, recoding mame to be even semi-efficiently multithreaded will be a total bee-atch to do. (the prior sentence is
way understated)
[shrug] Wait until most new computers are
multiCPU (dual or hyperthearded aren't enough, I mean 4 & 8 CPUs). And CPU speed is not increasing very much. And a super genius without a life or a job decides to recode mame multithreaded. Then you might get real mulitthreaded mame (that scales close to the number of CPUs in the system).
Until then, well, people who want it can study computer programming hoping to become that genius, and wait for most retail PCs to go multiCPU.
