Сообщение Re[24]: Для тех, кто смеется над JavaScript от 28.06.2020 18:23
Изменено 28.06.2020 18:34 Serginio1
Re[24]: Для тех, кто смеется над JavaScript
Здравствуйте, Ikemefula, Вы писали:
S>>Можно код, который сломает i+=1 при "однопоточном исполнителе"?
I>Если буквально такой вот код, то никакой, потому что один поток выполняет ровно одну операцию и никто больше на это не влияет. Глаза то раскрой — мои два примера именно про это, только ресурс не переменная в памяти, а внутри файла. Все что делает каждая из задач — инкрементит переменную. Только протокол доступа другой. Какой именно — надо взять, посмотреть, запустить и сравнить результаты двух-трех запусков.
I>Ты можешь заменить операции с файлом, скажем на такие
I>
Это уже не "однопоточном исполнителе"
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>
Это уже не "однопоточном исполнителе"
Но если
будут вызываться только в одном методе (await гарантирует последовательность вызовов из разных потоков)
Читай и записывай хоть откуда. Тоже, что и при синхронном.
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 гарантирует последовательность вызовов из разных потоков)
Читай и записывай хоть откуда. Тоже, что и при синхронном.