UnThread:Overview
UnThread API is a significant, patent-pending, advance in multicore programming of CPU-bound applications that restores scalable speed-up in previously intractable situations. It is specifically designed for multithreading real-world CPU-bound and CPU-intense applications in which the tasks are larger, more complex chunks than the typical tight loops that are multithreaded in other models, such as Intel®'s TBB. UnThread uniquely provides sustained concurrency through sustained 90-99% utilization of all available CPU cores (currently up to 64 cores - see Q&A) and provides a thin abstraction layer over OS thread management that allows easy thread pooling and synchronization while still maintaining control over many subtle aspects of the threads (such as processor affinity). UnThread provides robust, linear scaling across a broad spectrum of hardware and allows you to concentrate on the task at hand instead of complex thread manipulation.
UnThread is an alternative to writing explicit/native threading:
- Designed for monolithic, CPU-bound and CPU-intense algorithms.
- Ideal for tasks that are collaborative in nature. UnThread tasks often have overlapped data and work cooperatively. UnThread works well even when tasks have shared data.
- Designed for relatively large task subdivision, i.e., tasks subdivision that is more substantial than a loop or recursion. Task subdivision in UnThread involves more complex operations, including entire loops, functions, etc. UnThread is useful when lower-level tools, such as Threading Building Blocks (TBB, from Intel), are not appropriate due to the relative size and cooperative nature of the sub-tasks.
- For high-value applications that require fast execution, with sustained, scalable concurrency on multicore hardware.
- Automatic scaling with additional cores/processors, without additional source code changes
- Lets developers focus on their code, instead of worrying about threads, cores and caches.
- Virtually eliminates race and deadlocks, when using UnThread's data sharing features.
- Not a "magic bullet." Use of UnThread requires code changes and a deep understanding of the underlying algorithm to be converted to multicore.

