I also like riddles.
I suppose that the reason you can run two thread at one time is because the processer has diffrent sections that can process information at the same time.
If thats right could a piece of softwhere be written so the nither thread has to weight for the other to finish.
or could chunks of information be sorted as to go throught the processor in an effecient manner...
I'm sorry if I sound like an idiot ... it all make sence to me.
HT permits a 2nd thread (2nd virtual processor) to make use of the time that would otherwise be wasted by the 1st thread (1st virtual processor) and vise versa. The processor design, when running one thread), attempts be as efficient as possible (e.g. caches data, has a pipeline, reads ahead, writes behind, etc...). Excepting for a few circumstances a single threaded processor typicaly waits infrequently. That being said, knowing what circumstance the processor tends to wait for, a programmer could specificlly write code that will encounter these wait conditions frequently. So someone could write a program where two threads are not interfering with each other.
Look at using a dual core processor if you want more efficient multi-threading.