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

Сообщение Re[24]: Для тех, кто смеется над JavaScript от 28.06.2020 18:23

Изменено 28.06.2020 18:34 Serginio1

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


S>>Можно код, который сломает i+=1 при "однопоточном исполнителе"?


I>Если буквально такой вот код, то никакой, потому что один поток выполняет ровно одну операцию и никто больше на это не влияет. Глаза то раскрой — мои два примера именно про это, только ресурс не переменная в памяти, а внутри файла. Все что делает каждая из задач — инкрементит переменную. Только протокол доступа другой. Какой именно — надо взять, посмотреть, запустить и сравнить результаты двух-трех запусков.


I>Ты можешь заменить операции с файлом, скажем на такие


I>
I>async read(): number { return i }

I>async write(value: number) { i = value }
I>


Это уже не "однопоточном исполнителе"
Re[24]: Для тех, кто смеется над JavaScript
Здравствуйте, Ikemefula, Вы писали:


S>>Можно код, который сломает i+=1 при "однопоточном исполнителе"?


I>Если буквально такой вот код, то никакой, потому что один поток выполняет ровно одну операцию и никто больше на это не влияет. Глаза то раскрой — мои два примера именно про это, только ресурс не переменная в памяти, а внутри файла. Все что делает каждая из задач — инкрементит переменную. Только протокол доступа другой. Какой именно — надо взять, посмотреть, запустить и сравнить результаты двух-трех запусков.


I>Ты можешь заменить операции с файлом, скажем на такие


I>
I>async read(): number { return i }

I>async write(value: number) { i = value }
I>


Это уже не "однопоточном исполнителе"

Но если
 var i=await  read();
 await write(++i);


будут вызываться только в одном методе (await гарантирует последовательность вызовов из разных потоков)
Читай и записывай хоть откуда. Тоже, что и при синхронном.