Code annotations for making parallel programming painless
Many years CPUs were improving performance by increasing clock rate until they reached ceiling of frequency for semiconductor devices. As humanity is far from inventing good alternative, vendors choose another strategy – freeze frequency, but put few cores in a single CPU. Today you can’t already surprise anyone by phone with dual-core CPU. Theoretically, increasing number of cores can proportionally increase performance, but achieving this goal lies totally on us – on software developers. To get advantages of few cores, we need to design software in such a way that it will execute in parallel and effectively use all of available cores. What does it mean on practice? If you are web-developer or developer of multi-user service – you are lucky. All (or almost all) job of paralleling processing of requests will catch web-server and database management system. But if you process a large amount of data at your own or create that web-servers and DBMSs, problem of parallelism will worry...