I believe I have a reasonable understanding of threading from an Object Oriented perspective using the Thread class and the Runnable interface.  In one of my applications there is a "download" button that allows the user to run a task in the background that takes about half an hour whilst continuing to use the VB.NET application.

However, I do not understand how Threading maps to the physical architecture of a computer.  If you have a single threaded application that runs on a PC with a quadcore processor then does a .net program use all four processors?

If you have a multi threaded application (say four threads) on a quadcore processor then does each thread execute on different cores?

Do you have any control of this as a developer? 

I have referenced a book I read at university called Operating System Concepts, but I have not found a specific answer.


Question: Scatterplots for subsets of multivariate data [Updated]
Answer: Problem with Ticks can be solved by fixing DataRange. I don't know what is the problem with color specification for You, I hope I have not missunderstood anything:

Needs["StatisticalPlots`"]

datap = RandomReal[1, {60, 5}]; (*it works for any n*)
parts = {12, 13, 12, 13, 5}; (* remember that Total@parts == Length@datap *)
colors = {Red, Green, Orange, Blue, Black}; (*or some random, as You like*)

data = Take[datap, {1, 0} + #] &amp; /@ (Partition[Prepend[Accumulate@parts, 0], 2, 1])


Show[
     PairwiseScatterPlot[data[[ #]], DataRanges -&gt; {{0, 1}, {0, 1}}, DataTicks -&gt; True, 
                         PlotStyle -&gt; colors[[ #]], ImageSize -&gt; 500
                        ] &amp; /@ Range[Length@parts]
    ]




I suspect datap can be splitted in simpler way but I have blockout now in my head.