Страницы

Поиск по вопросам

среда, 1 января 2020 г.

Multithreading vs concurency [дубликат]

#java #многопоточность


        
             
                
                    
                        
                            This question already has answers here:
                            
                        
                    
                
                        
                            Многопоточное vs асинхронное программирование
                                
                                    (4 ответа)
                                
                        
                                Закрыт 2 года назад.
            
                    
В чем разница между понятиями multithreading, concurency, parallelism разве это не
одно и тоже
    


Ответы

Ответ 1



Multithreading (многопоточность) - это использование нескольких потоков. При этом вовсе не обязательно, что эти потоки будут выполняться одновременно (параллельно). В эру одноядерных процессоров многопоточность тоже активно использовалась, например, в приложениях с GUI: тяжёлые вычисления выносятся в отдельный поток, чтобы не "замерзал" gui-поток. При этом понятно, что эти потоки выполняются по очереди, не одновременно. Parallelism (параллелизм, параллельность) - это использование нескольких потоков одновременно. Это возможно только в системах с несколькими ядрами/процессорами. Запускаются несколько потоков и они выполняются каждый на своём собственном ядре. Concurrency (с переводом этого термина на русский язык есть определённые проблемы: его переводят как параллельность, одновременность, конкуренция) - это возможный одновременный доступ к каким-либо ресурсам: памяти, файлам и т. п. Обычно это происходит в результате обращения к ресурсу из нескольких потоков. Естественно, один поток может испортить (перезаписать) результат выполнения другого потока. Чтобы этого не произошло, приходится использовать синхронизацию. Asynchrony (асинхронность) - асинхронный доступ к каким-либо ресурсам. Потоки при этом могут не использоваться вовсе. Например, операции ввода-вывода (IO) могут выполняться таким образом. Один единственный поток может инициировать чтение/запись с помощью асинхронного IO сразу во много файлов, сокетов и т. п.

Комментариев нет:

Отправить комментарий