The Promise of Making Many Things at the Same Time
Concurrency is not new in computer science. It is a property where many computations (which also interact mutually) are executed simultaneously. Multicore processors were a game changer when they were introduced several years ago. Before their introduction, processor performance used to roughly double each year.
A single semiconductor chip can now hold nearly a billion transistors from just a million 25 years back. However, miniaturization has its limits. This is why multicore processors were introduced so that the improved performance could be sustained.
Multi core processors are both a boon and a bane. On multicore processors, instructions for each thread have to be executed parallely on each core. The threads communicate with each other via shared memory, access to which has to be synchronized. However, it is quite complex to achieve and if it is not done properly, it can cause problems including system crashes. Such an unpredictable environment can lead to chaos and consequently, monetary losses.
For these reasons, software development for concurrent programs is difficult. It becomes even harder because of the multicore architecture. The alternative is embedded development. Embedded software do not suffer from such problems. Embedded systems are not only orderly, but can also help you achieve quality production.