Multi-ThreadingThe Mult-ithreading paradigm has become more popular as efforts to further exploit instruction level parallelism have stalled since the late-1990s. This allowed the concept of Throughput Computing to reemerge to prominence from the more specialized field of transaction processing: Even though it is very difficult to further speed up a single thread or single program, most computer systems are actually multi-tasking among multiple threads or programs. Techniques that would allow speedup of the overall system throughput of all tasks would be a meaningful performance gain. The two major techniques for throughput computing are multiprocessing and multithreading. Some criticism of multi-threading include: Multiple threads can interfere with each other when sharing hardware resources such as caches or translation lookaside buffers (TLBs). Execution times of a single-thread are not improved but can be degraded. Hardware support for Multithreading is more visible to software, thus requiring more changes to both application programs and operating systems than Multiprocessing. Hardware techniques used to support multithreading often parallel the software techniques used for computer multitasking of computer programs. DocFamily's server software supports multi-threading. Through multi-threading support, a DocFamily server can utilize the underlying hardware in an efficient way. This is essential for scalability and throughput. |