As I understand it the I7 has 4 cores and each core has a pair of local caches. So a processor can switch back an forth between 2 threads and the cache does not have to be rebuilt. Cache memory can cause very interesting problems. It works very well when multiple caches map widey seperated main memory locations, but what happens when 2 caches refer to the same block of main memory? Cache blocks get invalidated as multiple processors are updating the same block of main memory. But this wouldn't be a problem between multiple instances of J.
That would not be the case if J implemented multiple threads to use multiple cores to speed up computation. J is unique among programming languages in that it contains constructs ready-made for multi-tasking. For example, each (&.>) could easily put each item into a separate process to run in parallel. But this could result in cache collisions as the results for the various threads would be close together in memory. But that would be a problem that could be handled. What would probably be a bigger problem would be all the applications written that would break where the verb argument to each modifies global names assuming that the verb is not multi-tasked. ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
