Multi-core processors have become mainstream in mobile devices. However, many multi-core devices are not used to their full capacity, which is probably why so far no vendor is building octa-core cell phones. Creating multithreaded applications from start is hard because updating program state from parallel threads is highly dangerous: race conditions and timing dependencies will prove to be hard-to-find errors. Parallelizing singlethreaded applications is hard, too, because it is often unclear from start whether it can actually succeed and yield the expected speedups.In the Android case, the programmer’s insight is complicated by the dual Java/C language organization.
Klaas will show some example Android code and slowly turn it into a multithreaded application, highlighting most of the issues C or C++ developers will run into along the way, including data and functional partitioning.