Hi,

> I am likely to write a simple command line C++ program that gets data out of
> a database, processes it, and then writes the data to a database table to be
> consumed by mobile devices.  I am very interested in seeing the speed
> difference in processing the same data in C++ versus my AIR application.

Given it a fairly straight forward calculation I’s probably go with C rather 
than C++ to avoid some of it’s complexity. It likely to run faster than in AIR.

> I currently know nothing about C++, so I don't know if it is like AIR and
> natively runs in a single thread, or if it somehow takes advantage of
> multiple threads on your computer.

By default no, in C you need to write code to take advantages of threads and 
threads are not part of the language. While reasonably straightforward [1] it 
can be a little tricky at times to get working/debug.

>  it would be more efficient for me if I was able to run multiple
> instances of the C++ application side by side so that I could process
> several cities of data at the same time.

Not more efficient but it would be simpler. A thread has less overhead than a 
process. It is however easier to communicate between threads than communicate 
between processes if you need to do that.

>  I was wondering what happens if you run several instances of a single 
> threaded application at the same time? 

The OS will give each of them some time on the number or cores it has. Remember 
there also other programs likely to be running at the same time so you are not 
going to get 100% of the CPU cores all the time just for just your code.

> Does the OS put each instance in its own thread

The OS works at a process level not a thread level. [2] The code works at a 
thread level.

For a problem like this something like Spark [3] is going to be a more scalable 
solution as it can scale over multiple cores and machines. The problem, 
basically taking a set of data and filtering it fits the map / reduce [4] 
concept quite well. There is however (at a guess) going to be a significant 
learning curve here.

Thanks,
Justin

1. http://www.geeksforgeeks.org/multithreading-c-2/
2. 
http://www.programmerinterview.com/index.php/operating-systems/thread-vs-process/
3. http://spark.apache.org
4. https://en.wikipedia.org/wiki/MapReduce

Reply via email to