Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094

Чем отличаются асинхронность, многопоточность, многозадачность, параллелизм?

23.10.2019, 08:19. Показов 6527. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Читаю про Многопоточность и Aсинхронность (последовательно )

Возник такой вопрос:
Если я даю команду что-то выполнить в другом потоке

C#
1
2
3
4
                // запускаем новый поток для получения данных
                Thread receiveThread = new Thread(new ThreadStart(ReceiveMessage));
                receiveThread.IsBackground = true;
                receiveThread.Start(); //старт потока
то это и есть Aсинхронность ? Или это Многопоточность, а Aсинхронность это что-то другое?

Подскажите, а то я начинаю путаться.

Не по теме:


Почему нельзя создать тему со слово Aсинхронность в заголовке ?

0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2019, 08:19
Ответы с готовыми решениями:

Асинхронность и многопоточность
Добрый день! Меня интересует вопрос, в чём различие асинхронности и многопоточности?

Чем отличаются C# Generics и C++ Templates ?
Чем отличаются C# Generics и C++ Templates ?

Чем отличаются var и dynamic?
Чем отличаются Var и dynamic? И там и там вроде бы компилятор сам определяет, к какому типу отнести переменную.

6
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
23.10.2019, 10:02
Цитата Сообщение от Чипс Посмотреть сообщение
это и есть Aсинхронность ? Или это Многопоточность, а Aсинхронность это что-то другое?
Асинхронность — это выполнение одной задачи, не дожидаясь выполнения другой.
Понятия асинхронность, многопоточность, параллелизм и распределенные вычисления — не взаимоисключающие, последние три — частные случаи асинхронности.

Информация к размышлению: как реализована многопоточность на одноядерном процессоре?
Сильно ли она отличается от асинхронности, реализованной в одном потоке?
1
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
23.10.2019, 10:18  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
как реализована многопоточность на одноядерном процессоре?
На сколько я понял из книги Рихтера, то это будет очередь, где неактивные потоки будут находится в состоянии ожидания.

Цитата Сообщение от kolorotur Посмотреть сообщение
Сильно ли она отличается от асинхронности, реализованной в одном потоке?
А тут я не пойму, если у вас один поток, то никакой асинхронности быть не должно.
Я думаю так: Вот идёт главные поток, строки кода исполняется последовательно, следовательно никакой асинхронности нет, но как только я даю команду receiveThread.Start(); //старт потока проявляется эта самая асинхронность.
Поскольку выполнение основного потока продолжается, но параллельно у меня выполняет ещё какой-то код.

Похоже, что я думаю не правильно.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
23.10.2019, 10:27
Цитата Сообщение от Чипс Посмотреть сообщение
это будет очередь, где неактивные потоки будут находится в состоянии ожидания.
Верно, но выполняться-то одновременно будет только один поток, хоть и частично.

Цитата Сообщение от Чипс Посмотреть сообщение
если у вас один поток, то никакой асинхронности быть не должно.
Значит если одно ядро ЦП, то и многопоточности быть не должно?
Чем очередь потоков, выполняющихся на одном ядре, отличается от очереди задач, выполняющихся в одном потоке?

Цитата Сообщение от Чипс Посмотреть сообщение
Вот идёт главные поток, строки кода исполняется последовательно, следовательно никакой асинхронности нет
В среде Windows весь код отрисовки оконных приложений выполняется в одном потоке.
Как же так получается, что может заполняться прогрессбар одновременно с анимацией какой-нибудь кнопки?
Ответ: путем реализации асинхронности в одном потоке (читайте про очередь сообщений Windows).

Цитата Сообщение от Чипс Посмотреть сообщение
но как только я даю команду receiveThread.Start(); //старт потока проявляется эта самая асинхронность.
Появляется многопоточность — это частный случай асинхронности.

Цитата Сообщение от Чипс Посмотреть сообщение
Поскольку выполнение основного потока продолжается, но параллельно у меня выполняет ещё какой-то код.
А если процессор одноядерный? Откуда там параллельное выполнение, если на ядре может одновременно только один поток работать?
1
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
23.10.2019, 10:34  [ТС]
Тобишь:
Windows - это главный поток который создаёт для каждого запущенного пользователем процесса (.exe) свой поток, при это у самих процессов могут быть свои потоки.

Добавлено через 4 минуты
Цитата Сообщение от kolorotur Посмотреть сообщение
Значит если одно ядро ЦП, то и многопоточности быть не должно?
Windows создаёт виртуальный ЦП для каждого нового потока в котором работает запущенный пользователем процесс.

Цитата Сообщение от kolorotur Посмотреть сообщение
Чем очередь потоков, выполняющихся на одном ядре, отличается от очереди задач, выполняющихся в одном потоке?
С точки зрения логики ничем. Поток это и есть виртуальный ЦП ?

Цитата Сообщение от kolorotur Посмотреть сообщение
А если процессор одноядерный? Откуда там параллельное выполнение, если на ядре может одновременно только один поток работать?
Виртуальный ЦП ?

Добавлено через 1 минуту
Цитата Сообщение от kolorotur Посмотреть сообщение
Как же так получается, что может заполняться прогрессбар одновременно с анимацией какой-нибудь кнопки?
Ответ: путем реализации асинхронности в одном потоке (читайте про очередь сообщений Windows).
Очередь исполнения кода для ЦП будет "набиваться" из разных потоков?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
23.10.2019, 10:38
Лучший ответ Сообщение было отмечено Чипс как решение

Решение

Цитата Сообщение от Чипс Посмотреть сообщение
Виртуальный ЦП
Что такое "виртуальный ЦП", если одновременно физически может выполняться только одна инструкция?

Я просто пытаюсь донести, что асинхронность — это всеобъемлющий термин, включающий в себя многопоточность и параллелизм. Вы можете одновременно выполнять несколько задач — готовить обед из нескольких блюд, например. Каждое блюдо готовится асинхронно, хоть и повар (поток) — всего один. А может и вообще 0, т.к. асинхронную задачу вообще выполняет кто-то другой (IO).
Многопоточность — это частный случай асинхронности, когда создается видимость, что несколько задач выполняются одновременно. Это может быть всего лишь видимость, а может быть и настоящее одновременное выполнение — тогда многопоточность превращается в параллелизм, т.е. параллелизм — это частный случай многопоточности.
3
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
23.10.2019, 11:02  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Многопоточность — это частный случай асинхронности, когда создается видимость, что несколько задач выполняются одновременно. Это может быть всего лишь видимость, а может быть и настоящее одновременное выполнение — тогда многопоточность превращается в параллелизм, т.е. параллелизм — это частный случай многопоточности.
Спасибо, кажется, я стал чуточку умней.

Пойду мучить Элд Хасп(а)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2019, 11:02
Помогаю со студенческими работами здесь

Чем отличаются finalize() и dispose()?
чем отличаются finalize() и dispose() ?

Чем отличаются расширения Where<> и TakeWhile<>?
Несколько раз прочитала определения, но на примере непонятно. Я должна написать тела этих двух расширений, отключая Linq. Так вот,...

Чем отличаются две конструкции?
подскажите в чем отличие PictureLoad.CreatePicture(this, 30+j*130, 80+i*110, obj.ToString(CultureInfo.InvariantCulture)); от ...

Чем отличаются делегаты и события
Вопрос, наверное, странный. Но чем отличаются делегаты и события в C#? Добавлено через 5 минут Если я правильно понял, то при...

Чем отличаются способы инициализации?
Здравствуйте. Вчера баловался с новым способом инициализации из C# 6.0 и возникла идея для задачки. Ответ на неё у меня есть (как я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru