Is sequential C dead as a multicore programming language?The authors of my Editor’s Top Picks for this week – Atego’s Kelvin Nilsen and Adacore’s S. Tucker Taft - believe that despite all the tools that allow embedded systems developers to maintain traditional sequential C programming techniques in the highly parallel environment of multicore design, it is now time to leave those methods behind and move on.
In “Using Java to deal with multicore programming complexity,” a three part series on Embedded.com this week, Nilsen first looks at the advantages of Java as a multicore programming environment, then how to transition legacy C code to Java, and finally how to achieve deterministic multicore performance using a combination of C and Java.
In “ParaSail: less is more with multicore,” Taft takes another approach to migrating to a more efficient parallel programming environment. He says Parasail will allow embedded developers to stick with some of the traditional sequential programming methods because it has been designed to eliminate many of gotchas faced in multithreaded multicore designs, such as global variables, parameter aliasing, explicit threads, lock/unlock and race conditions, and pointers.
Of course, using Embedded.com submissions in the form of design articles, white papers and webinars as the measuring stick, it would seem that there is still a lot of faith being placed in extensions to traditional sequential methods, such as message passing methods such as MCAPI, parallel programming extensions such as OpenMP, virtual machine execution environments using hypervisors, and interprocess communications protocols. Of these some further Editor’s Favorites are:
Thread synchronization for better multicore system tradeoffs
Managing multiple processes in a deterministic multicore design
Pick the right multicore virtualization use case for your design
Which way do you favor? Any of the alternatives above? Or something else? I would like to hear from you.