Software development tools have not adapted to the growing popularity of multi-core CPUs, and developers are still "stuck"' with low-level and high-cost thread abstractions. The situation is becoming even more complicated with the advent of heterogenuous computing. In this article, we point out some drawbacks of high-level abstractions currently in use, and propose Kahn process networks (KPN) as a more high-level and efficient abstraction for developing parallel applications. We show that the native POSIX mechanisms (threads and message queues) perform suboptimally as an implementation vehicle for KPNs, and we present an implementation of a run-time environment that can execute KPNs with less overhead. Our evaluation shows the advantages and disadvantages of statically mapping Kahn processes to CPUs.