Информация об изменениях

Сообщение Re[17]: Для тех, кто смеется над JavaScript от 19.06.2020 9:30

Изменено 19.06.2020 10:05 Pauel

Re[17]: Для тех, кто смеется над JavaScript
Здравствуйте, Мирный герцог, Вы писали:

МГ>Здравствуйте, Ikemefula, Вы писали:


I>>Ты путаешь логическое и физическое выполнение.

МГ>нет, я ничего не путаю, я вообще не говорил о "логическом" и "физическом" выполнении, особенно странно слышать о "физическом" выполнении когда я явно упомянул виртуальную машину как вычислитель.

В том то и дело, что не говорил, а надо бы Логически в моем примере целых 6 задач выполняются параллельно. Физически — однопоточный интерпретатор управляет состоянием многопоточной виртуальной машины.
Из букваря по Node.js — физически отдельные части операций или даже операции целиком выполняются на отдельных вычислителях, ядрах, процессорах или потоках. Например, чтение из файла может выполняться буквально одновременно — два разных потока вычитывают все что надо, а по окончании готовый результат прокидывают в интерпретатор. Возможности параллелизма ограничены в данном случае не количеством ядер-процессоров, а возможностями системной шины.

Даже если ограничить node, теоретически, одним ядром-потоком на все его активности, логически всё равно будет 6 параллельных задач. С т.з. физического параллелизма будет использоваться другая стратегия распределения времени.

I>>Гонки это свойство многозадачности, а не только потоков. Абсолютно любая многозадачность имеет гонки в соответствии со своей природой.

МГ>я смотрю ты не понимаешь что такое гонки. Гонки, это когда у тебя выполняется 10 инкрементов, а в результате переменная инкрементируется на 9, или вообще на 1, вот это гонки. А то что ты называешь "гонками" это о бычное асинхронное исполнение. Оно по определению не упорядоченно, но это не гонки и не "параллелизм".

Тут надо вспомнить, что гонки и есть отсутствие упорядочения доступа к разделяемому ресурсу из за неконтролируемых событий, таймингов и тд. Поскольку асинхронное исполнение неупорядочено по времени, то при доступе к разделяемому ресурсу будет плодить гонки. И так вне зависимости от вида многозадачности.

I>>Гонки при инкременте глобального счетчика — раскрой глаза, я именно этот вариант показал.

МГ>Я ещё раз говорю, давай код в котором в ноде будет гонка с инкрементом счётчика. То что ты можешь растекаться по древу мыслями используя собственное понимание общепринятой терминологию я уже понял.

Ты хочешь увидеть частный случай — гонки из за многопоточности. Объект в другой воркер или даже поток можно передавать как по значению, так и по ссылке.
Гонки возможны на всех без исключения видах многозадачности. Собственно, от них в любой многозадачности никуда не деться.
Re[17]: Для тех, кто смеется над JavaScript
Здравствуйте, Мирный герцог, Вы писали:

МГ>Здравствуйте, Ikemefula, Вы писали:


I>>Ты путаешь логическое и физическое выполнение.

МГ>нет, я ничего не путаю, я вообще не говорил о "логическом" и "физическом" выполнении, особенно странно слышать о "физическом" выполнении когда я явно упомянул виртуальную машину как вычислитель.

В том то и дело, что не говорил, а надо бы Логически в моем примере целых 6 задач выполняются параллельно. Физически — однопоточный интерпретатор управляет состоянием и работой многопоточной виртуальной машины.
Из букваря по Node.js — физически отдельные части операций или даже операции целиком выполняются на отдельных вычислителях, ядрах, процессорах или потоках. Например, чтение из файла может выполняться буквально одновременно — два разных потока вычитывают все что надо, а по окончании готовый результат прокидывают в интерпретатор. Возможности параллелизма ограничены в данном случае не количеством ядер-процессоров, а возможностями системной шины.
Даже если под капотом нода ничего не будет(гипотетически), все равно есть операционка, и она точно может делать несколько дисковых операций одновременно.

Даже если ограничить node, теоретически, одним ядром-потоком на все его активности, логически всё равно будет 6 параллельных задач. С т.з. физического параллелизма будет использоваться другая стратегия распределения времени.

I>>Гонки это свойство многозадачности, а не только потоков. Абсолютно любая многозадачность имеет гонки в соответствии со своей природой.

МГ>я смотрю ты не понимаешь что такое гонки. Гонки, это когда у тебя выполняется 10 инкрементов, а в результате переменная инкрементируется на 9, или вообще на 1, вот это гонки. А то что ты называешь "гонками" это о бычное асинхронное исполнение. Оно по определению не упорядоченно, но это не гонки и не "параллелизм".

Тут надо вспомнить, что гонки и есть отсутствие упорядочения доступа к разделяемому ресурсу из за неконтролируемых событий, таймингов и тд. Поскольку асинхронное исполнение неупорядочено по времени, то при доступе к разделяемому ресурсу будет плодить гонки. И так вне зависимости от вида многозадачности.
Например — мы знаем, что запросы open выполняются одним за другим, это гарантирует интерпретатор, а вот ответы ядра нода, операционки, могут приходить как им вздумается, в любом порядке, упорядочения нет, правильно? Отсюда и возникают гонки, что и демонстрируется примерами кода.

I>>Гонки при инкременте глобального счетчика — раскрой глаза, я именно этот вариант показал.

МГ>Я ещё раз говорю, давай код в котором в ноде будет гонка с инкрементом счётчика. То что ты можешь растекаться по древу мыслями используя собственное понимание общепринятой терминологию я уже понял.

Ты хочешь увидеть частный случай — гонки из за многопоточности. Объект в другой воркер или даже поток можно передавать как по значению, так и по ссылке.

Гонки возможны на всех без исключения видах многозадачности. Собственно, от них в любой многозадачности никуда не деться.