Combining Lock-Free Programming With Cooperative Multitasking For A Portable Multiprocessor Runtime System