{{htmlmetatags>metatag-robots=() metatag-title=(ALLOW | ugBASIC User Manual) metatag-keywords=(ugBASIC,Commodore 64,Commodore PLUS/4,ZX Spectrum) metatag-description=(Pagina del manuale per ALLOW) metatag-media-og:image=(:ugbasic:logo-ugbasic-fb.png) metatag-og:title=(ALLOW | ugBASIC User Manual) metatag-og:description=(Pagina del manuale per ALLOW) }} ====== ugBASIC Manuale Utente ====== ===== ALLOW ===== ===== SINTASSI ===== ALLOW ==== SCOPO ==== L'istruzione ''ALLOW'' è l'opposto della funzione ''FORBID''. Mentre ''FORBID'' blocca completamente il multitasking, ''ALLOW'' lo riattiva, consentendo a ugBASIC di pianificare nuovamente l'esecuzione di altri task, passando l'esecuzione da un task all'altro in base alla sua politica di pianificazione. Se una ''PROCEDURE'' ha precedentemente chiamato ''FORBID'' per garantire l'accesso esclusivo alla CPU, ''ALLOW'' restituisce il controllo alle altre procedure, consentendo ad altre procedure di continuare l'esecuzione. Nota che questo tipo di controllo è "statico": in altre parole, la compilazione si interromperà se la procedura che ha chiamato ''FORBID'' desidera successivamente chiamare una funzione che richiederebbe l'attivazione del multitasking. La chiamata a ''ALLOW'' ripristinerà il multitasking e consentirà la chiamata di routine di questo tipo. Una volta che una procedura ha terminato di eseguire una sezione di codice che richiedeva l'accesso esclusivo al processore, dovrebbe chiamare ''ALLOW'' per consentire l'esecuzione di altre attività. Se un'attività deve attendere un evento (ad esempio, un segnale), può chiamare ''ALLOW'' prima di entrare in uno stato di attesa, consentendo ad altre attività di eseguire il loro codice mentre l'attività di attesa è sospesa. Utilizzare ''FORBID'' e ''ALLOW'' in modo equilibrato è essenziale per ottenere sia buone prestazioni che una corretta sincronizzazione tra procedure parallele. In molti casi, meccanismi di sincronizzazione più sofisticati, come le variabili condivise, potrebbero essere utilizzati senza disabilitare completamente il multitasking. ==== ESEMPIO ==== PARALLEL PROCEDURE test FORBID ' busy waiting, multitasking is suspended! FOR i=0 TO 1000: WAIT 1 MS : NEXT i ALLOW END PROC ==== ABBREVIAZIONE ==== Alw ==== DISPONIBILE SU ==== * * Atari (400/800) * Atari XL/XE * Commodore 128 (MOS 8502) * Commodore 128 (Zilog Z80) * Commodore 64 * Commodore 64+REU * TRS-80 Color Computer * TRS-80 Color Computer 3 * ColecoVision * Amstrad CPC 664 * Dragon 32 * Dragon 64 * Thomson MO5 * Thomson MO5 * Olivetti Prodest PC128 * Commodore PLUS/4 * SEGA SC-3000 * SEGA SG-1000 * * VG-5000 * Commodore VIC-20 * ZX Spectrum 48 ==== VEDI ANCHE ==== [[FORBID]] ==== PROBLEMI? ==== Se si riscontra un problema nell'utilizzare questo comando, se si ritiene che vi sia un bug oppure che la spiegazione sia poco chiara, è possibile [[https://github.com/spotlessmind1975/ugbasic/issues/new?title=SEGNALAZIONE SU ALLOW|aprire una segnalazione]] per questa parola chiave su GitHub. Grazie!===== POWERED BY ===== [[:it:ugbasic:user:index|{{ :ugbasic:user:logo-ugbasic.png?nolink&600 |}}]]