Многопоточное программирование — это форма параллельного программирования, которая предполагает выполнение нескольких потоков в рамках одного процесса или приложения. 1
Потоки — это мельчайшие объекты, которые могут независимо планироваться и выполняться операционной системой. 1 Каждый поток имеет свой собственный счётчик программ, стек и локальные данные, но разделяет пространство памяти, глобальные данные и системные ресурсы с другими потоками в том же процессе. 1
Многопоточность позволяет решить две основные задачи: 3
Многопоточность помогает лучше использовать системные ресурсы. 3 Если один поток приостанавливается из-за ожидания завершения блокирующей операции (например, ввода-вывода), другие потоки могут продолжать работу, не простаивая, что повышает общую производительность приложения. 3
Однако у многопоточного программирования есть и недостатки, например повышенная сложность, вероятность ошибок, связанных с параллелизмом, и проблемы с масштабируемостью. 1