Task parallelism is used by multi-user and multitasking operating systems, and applications depending on processes and threads, unlike data processing applications (see data parallelism). Most real programs use a combination of Task parallelism and Data parallelism.