but each one is fast enough that many programs are fast enough without parallelizing single tasks. (Threads are commonly used to deal with asynchronous inputs or outputs, especially in a GUI.) General-purpose CPUs are technically MIMD devices, but usually only hardware designed from the ground up for MIMD programming is referred to as MIMD. Many widely used programming languages such as C, C++ and Java have ceased to be strictly von Neumann by adding support for parallel processing, in the form of threads. However, most of the categorically non-von Neumann languages are also functional languages and have not achieved widespread use. References Programming language classification John von Neumann