Tim wrote in message ...
James,
There is (shouldn't be) nothing risky in what you call "invisible threads
in libraries". As soon as you use sockets, database or many other library or
DLL type functionality the original authors code comes into play. The fact
that these libraries are (or may be) written to use multiple threads is the
choice of those authors and consequently must be tested properly on SMP
systems by them. With MS supplied stuff EG Winsockets, ODBC and so on, they
all work well with seldom a bug to be found (no software is perfect).
Some common problems - particularly a while back - was device drivers that
were not tested on SMP systems. They would work find on single processors,
but not duals (I've only ever had duals). It is common to find applications
that will not run on SMP systems because of the types of problems I refer
to. In these cases there is nothing for it than to highlight the fact that
you are running on an SMP system and submit bug reports with evidence and
steps to recreate to the authors.
You say "Writing Multithreaded apps that expect separate execution time
isIMHO a bad design". If you are going to write multithreaded apps then how
you deal with synchronising access to shared data depends in part on the
language you use. Many languages impose a single streaming approach
invisibly on you so you are not going to get benefit from multi threading
(EG VB6 and prior). If you are going to do this then you will need to be
fluent in the appropriate use of things such as Mutexes, Semaphores, and
Events to facilitate the sharing and coordination of data. If you are
interested I suggest you go to
http://msdn.microsoft.com and have a read up
there.
- Tim