Discuss Scratch

AndrzejL1
Scratcher
100+ posts

Wyjątkowe klony a współbieżność - poradnik i gotowa implementacja

AANNTTOONNII jesteś wielki, bo już zwątpiłem we wszystko.
Jest sens zrobić poprawki w poradniku? Myślisz, że się komuś przyda?

Martwi mnie też kwestia klonowania, czyli czy jest możliwość, że rodzic zmieni numer dziecka, a poprzednie dziecko ten numer dostanie. Traktowałem dotąd, że klonowanie to operacja atomowa, dla rodzica.
Krótko rzecz ujmując - czy skrypt odpala polecenie sklonuj i czeka aż klon się skopiuje, zanim odpali kolejne polecenie?
Bo jeśli nie, to sytuacja jest beznadziejna. Tzn. będzie to takie programowanie na niby, czyli a nuż się uda i błąd nie wystąpi.

A drugie pytanie jeszcze mam, bo mi nie odpowiedzieli w innym wątku.
Czy jak duszek odbiera sygnał a i ten sygnał mu wyśle 100 duszków naraz, to czy skrypt
kiedy otrzymam [a]
uruchomi się 100 razy równocześnie, czy też 100 razy po kolei?

P.S.
Dziwne, że sklonowanie w tym samym czasie 128 klonów nie dało błędu.

Last edited by AndrzejL1 (March 2, 2021 20:31:03)

AANNTTOONNII
Scratcher
1000+ posts

Wyjątkowe klony a współbieżność - poradnik i gotowa implementacja

AndrzejL1 wrote:

Jest sens zrobić poprawki w poradniku? Myślisz, że się komuś przyda?

Tak. Z moich obecnych doświadczeń wynika, że to najczęstszy rodzaj problemów, z którym się męczą mniej doścwiadczeni scratcherzy. Nie sądzę jednak, że wiele z nich skorzysta z tego jeśli będzie wpisane w spisie jako “Rozszerzony algorytm Petersona”. Trzeba wymyślić coś bardziej przyjaznego i intuicyjnego.

AndrzejL1 wrote:

Krótko rzecz ujmując - czy skrypt odpala polecenie sklonuj i czeka aż klon się skopiuje, zanim odpali kolejne polecenie?

Tak. Każdy blok w scratchu jest operacją atomową. W szczególności jest nią nawet takie wyrażenie:
<((n) + (7)) = (losuj od (m) do (k))>

Trzeba jednak wspomnieć, że scratch nie czeka aż wykona się cały skrypt podpięty do:
kiedy zaczynam jako klon

Muszę jednak dodać, że zrobienie kilku rzeczy w scratchu jako operacji atomowej jest bardzo łatwe i na początku wątku zupełnie o tym zapomniałem. Trzeba w tym celu użyć klamry “all at once” (“wszystko na raz”). Klamry nie ma w normalnym menu, ale możesz ją zkopiować z mojego projektu - https://scratch.mit.edu/projects/383168396/

AndrzejL1 wrote:

Czy jak duszek odbiera sygnał a i ten sygnał mu wyśle 100 duszków naraz, to czy skrypt
kiedy otrzymam [a]
uruchomi się 100 razy równocześnie, czy też 100 razy po kolei?

Uruchomi się 100 razy równocześnie.

AndrzejL1
Scratcher
100+ posts

Wyjątkowe klony a współbieżność - poradnik i gotowa implementacja

Ok to projekt jest zrobiony https://scratch.mit.edu/projects/495463577
Teraz pozostaje poprawić poradnik. Wrzuciłem Cię AANNTTOONNII do opisu projektu - mam nadzieję, że nie masz nic przeciwko.

Powered by DjangoBB