Job System 2.0: Lock-Free Work Stealing – Part 5: Dependencies

In today’s post, we will finally¬†take a look at the last remaining piece of the new job system: adding dependencies between jobs.

Continue reading

Advertisements

Job System 2.0: Lock-Free Work Stealing – Part 4: parallel_for

Continuing from where we left off last time, today we are going to discuss how to build high-level algorithms such as parallel_for using our job system.

Continue reading

Job System 2.0: Lock-Free Work Stealing – Part 2: A specialized allocator

As promised in the last post, today we will be looking at how to get rid of new and delete when allocating jobs in our job system. Allocations can be dealt with in a much more efficient way, as long as we are willing to sacrifice some memory for that. The resulting performance improvement is huge, and certainly worth it..

Continue reading

Building a load-balanced task scheduler – Part 4: False sharing

Even though a task scheduler can help with alleviating the burden of having to distribute small pieces of work to different threads, it cannot help preventing a few issues common in multi-threaded programming, especially in multi-processor environments.

Continue reading