Scambio di messaggi tra processi

Tradotto automaticamente da Deepl

4D v15 R5 introduce un nuovo modo, semplice e potente, di scambiare informazioni tra processi e anche tra processi e moduli. Questa funzione si basa su un sistema di messaggistica asincrona che consente di chiamare processi e moduli e di chiedere loro di eseguire metodi con parametri nel proprio contesto.

Il processo worker

Un worker ha una casella per i messaggi. Il processo worker viene creato al primo utilizzo e anche il processo associato viene lanciato automaticamente al primo utilizzo. A differenza del comando “New process“, un processo worker rimane in vita al termine dell’esecuzione del metodo.

Un worker può chiamarsi da solo per lavorare su lavori di grandi dimensioni in pezzi. I worker ridurranno drasticamente la necessità di variabili interprocesso e la necessità di semafori per consentire l’elaborazione parallela asincrona. Per il multi-threading preemptive è necessario un worker. Tuttavia, un worker può essere usato con processi cooperativi, quindi è utile anche in ambienti a 32 bit o interpretati.

Sono disponibili due nuovi comandi:

  • CALL WORKER” incapsula il nome del metodo del progetto e gli eventuali parametri in un messaggio e lo pubblica nella casella dei messaggi del lavoratore.

CALL WORKER (nome del processo|numero del processo;nome del metodo del progetto;param1;…;paramN)

  • KILL WORKER” invia un messaggio al worker specificato chiedendogli di dimenticare qualsiasi messaggio in sospeso e di uccidersi.

KILL WORKER (nulla|nome processo|numero processo)

È disponibile un database di esempio per dimostrare la nuova funzionalità:

Database di esempio

Modulo di chiamata

Ora, ogni modulo in esecuzione in una finestra ha una casella di messaggio.CALL FORM” consente di eseguire un metodo di progetto con argomenti nel contesto di un modulo visualizzato in una finestra, indipendentemente dal processo che possiede la finestra.

Il comando permette di utilizzare “CALL PROCESS” insieme alle variabili interprocesso per passare i messaggi. “CALL FORM” può essere utilizzato all’interno del contesto di un modulo per richiamare se stesso al fine di impilare o troncare il lavoro. In questo modo si elimina la necessità di ricorrere a soluzioni come SET TIMER(1). Sebbene sia estremamente necessario per i processi preemptive, funziona anche con processi cooperativi, con ambienti a 32 bit o interpretati.

La sintassi è:
CALL FORM (riferimento alla finestra;nome del metodo di progetto;param1;…;paramN)

Analogamente a “CALL WORKER“, “CALL FORM” incapsula il nome del metodo e gli argomenti del comando in un messaggio che viene pubblicato nella casella dei messaggi del modulo. Il modulo esegue quindi il messaggio nel proprio processo.

È disponibile un database di esempio per dimostrare la nuova funzionalità:

Database di esempio

Per maggiori dettagli, consultare il manuale di aggiornamento di 4D v15 R5.

Vanessa Talbot
- Product Owner - Vanessa Talbot è entrata a far parte del team di 4D Program nel giugno 2014. In qualità di Product Owner, è incaricata di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo ruolo è anche quello di assicurarsi che l'implementazione della funzionalità fornita soddisfi le esigenze del cliente. Ha lavorato sulla maggior parte delle nuove funzionalità di multi-threading preemptive e anche su un argomento molto complesso: la nuova architettura per le applicazioni con motore. Vanessa si è laureata presso Telecom Saint-Etienne. Ha iniziato la sua carriera presso il Criminal Research Institute come sviluppatrice per il dipartimento audiovisivo. Ha lavorato anche nei settori dei media e della medicina come esperta di supporto tecnico, produzione e documentazione di nuove funzionalità.