[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 382

 
Integer:

Un grande applauso! Riguardo al codice di pagina 378. Anche se il terminale registra l'ordine della coda, non può sapere in quale caso la funzione è stata eseguita e in quale è stata rifiutata.
E allora? Allora perché ha bisogno di sapere? L'accesso atomico è fornito. Questo è tutto ciò di cui ha bisogno. Gestisci il resto da solo. Di quale compito sta parlando? È tutto astratto.
 
Zhunko:
E allora? Perché avrebbe bisogno di saperlo? L'accesso atomico è assicurato. Basta così. Gestisci il resto da solo. Di quale compito sta parlando? È tutto astratto.


L'accesso atomico non è sufficiente. Non c'è garanzia di un'esecuzione coerente dei compiti, qualche compito può essere lasciato indietro. Il tuo codice e i tuoi log mostrano che i compiti vengono eseguiti a caso, non in modo sequenziale.
 
Zhunko:
...Gestisci il resto da solo...

È quello che sto dicendo, dovete farlo voi stessi, fornire solo l'accesso atomico non è sufficiente.
 
Zhunko:
...Basta così. Gestisci il resto da solo....

Vadim, ti stai sorprendentemente contraddicendo. Prima scrivi che quando è troppo è troppo. Poi ci si rende conto (o si intuisce) che bisogna fare qualcos'altro.
 
Buona giornata! Per favore scrivete, dopo che GlobalVariableSet ("Profit_pomnim", Itogo_Profit);
è stato creato, può essere ulteriormente utilizzato in modo tradizionale -

Profit_pomnim=365; Bumbara=Profit_pomnim; o deve essere chiamato solo attraverso funzioni speciali? GlobalVariableSet("Profit_pomnim", 365);
 
Dimka-novitsek:
Buona giornata! Per favore, scrivete, dopo la creazione di una variabile globale GlobalVariableSet("Profit_pomnim", Itogo_Profit);
può essere ulteriormente utilizzata in modo tradizionale -

Profit_pomnim=365; Bumbara=Profit_pomnim; o deve essere affrontata solo attraverso funzioni speciali?


Bumbara=Profit_pomnim - non puoi farlo, non esiste una variabile Profit_pomnim. Ma c'è una variabile globale Profit_pomnim.

Ecco come dovrebbe essere: Bumbara=GlobalVariableGet("Profit_pomnim");

 
Integer:

L'accesso atomico non è sufficiente. Non c'è garanzia di un'esecuzione coerente dei compiti, qualche compito può essere lasciato indietro. Il tuo codice e i tuoi log mostrano che i compiti vengono eseguiti a caso, non in modo sequenziale.
Non capisco... Cosa vuoi dire...? Quale garanzia? Lei si definisce un programmatore. Scrivi in un modo che sia garantito. Come può un compito essere "dietro il bot"? Cosa hai scritto lì dentro che non funziona?
Ho il sospetto che tu sia fissato su un ordine speciale di indirizzare la risorsa. Questo è l'approccio sbagliato per organizzare l'algoritmo. Scrivi in modo tale che non abbia importanza.
Intero:

È quello che sto dicendo, devi prendere delle misure tu stesso, ma fornire un accesso atomico non è sufficiente.
Nella mia pratica questo non è mai stato richiesto. Si può sempre evitare questo approccio. Mantenere la semplicità. Funzionerà in modo più affidabile.
Intero:

Vadim, ti stai sorprendentemente contraddicendo. All'inizio si scrive che è sufficiente. Poi si scopre che si capisce (o si intuisce) che bisogna fare qualcos'altro.

Non c'è contraddizione. Sopra ha risposto.

====================

Per quanto riguarda l'essere complicato, ricordo come hai scritto una funzione con un algoritmo complesso per calcolare il numero di giorni in un mese. Sorrido ancora quando lo ricordo.

Dmitry, non complicare troppo le cose. Se avete delle costanti, non dovete calcolarle. Dovete solo dichiararli.

Lo stesso si riferisce al multi-threading. Se non ne avete bisogno, non dovete usarlo. L'ordine speciale di indirizzamento di una risorsa implica un'esecuzione single-threaded.

Intero:
Un'altra cosa sulla regolazione del sistema. Se vengono creati diversi thread - sì, il sistema si regola. Ma se qualcuno dal lato ha inserito questi fili, allora devi pensare a tutto da solo, non ci sarà nessun miracolo dal sistema.
Chi è questo qualcuno? Nessun altro entra nei miei thread. Bisogna scrivere in modo che siano protetti.

 

Zhunko:

1. Non capisco... Cosa vuoi dire...? Quale garanzia?

2. Ti definisci un programmatore.

3. Scrivi in modo che sia garantito.

4. Come può un compito "andare dietro al bot"? Cosa hai scritto lì dentro che non viene eseguito?

5. Ho il sospetto che tu sia fissato sull'ordine speciale in cui si accede alla risorsa. Questo è l'approccio sbagliato per organizzare l'algoritmo. Scrivilo in un modo che non ha importanza.

6. Nella mia pratica questo non è mai stato richiesto. Si può sempre evitare questo approccio. Mantenere la semplicità. Funzionerà in modo più affidabile.

Non c'è contraddizione. Ho risposto sopra.

====================

7. Per quanto riguarda l'essere complicato, mi ricordo come hai scritto una funzione con un algoritmo complesso per calcolare il numero di giorni in un mese. Sorrido ancora quando lo ricordo.

8. Dmitry, non c'è bisogno di complicare le cose. Se avete delle costanti, non dovete calcolarle. È sufficiente dichiararli.

9. Lo stesso si riferisce al multi-threading. Se non ti serve, non usarlo.

1. Scusa!

2. Dove, quando, dove? Cosa c'entra adesso?

3. Scrivo in un modo che è garantito.

4. Qualsiasi di quelli che sono atomicamente accessibili.

5. No. E non in loop, ma facendo in modo che tutti i compiti siano eseguiti in ordine.

6. Non blaterare. La funzione di scambio di dati tra i terminali della vostra biblioteca richiede questo, non solo l'accesso atomico.

7. Che funzione è questa? Dimmi di più. Questo? Cosa c'è di così divertente? Forse non hai capito qualcosa. Se quella funzione, era un interesse sportivo e niente di più. A proposito, è un compito molto complesso e l'algoritmo più ottimale per questo compito (tra quelli conosciuti) è anche abbastanza complicato. Quindi il tuo sarcasmo è infelice.

8. O forse dovresti trovare lavoro in un asilo come infermiera? Il livello di predicazione è lo stesso, adatto. Forse nel paragrafo precedente accenno che io tipo di non so come tradurre il tempo in secondi a ore minuti, ecc da funzioni emkulya?

9. Problemi di memoria o di consapevolezza della realtà? Ricordate di cosa tratta la discussione: come trasformare un'esecuzione parallela di compiti in una sequenziale.

 
Integer:

9. Problemi di memoria o di consapevolezza della realtà? Ricordate di cosa tratta la conversazione: come trasformare l'esecuzione parallela dei compiti in esecuzione sequenziale.

La tua supposizione che la sincronizzazione sia fuori sincrono è il punto di partenza:

Intero:

Vadim, hai provato ad applicarlo? Non sincronizza un bel niente. Ci ho giocato di recente. Devi costruire la coda da solo. Sfortunatamente, riduce il codice solo di tre righe. O forse non lo capisco.

Ecco il codice dove funziona la sincronizzazione. Viene fornito un accesso atomico alla risorsa. Il resto è il tuo armeggiare con il portare i thread in un unico thread. Ti ho suggerito di rivedere l'algoritmo sbagliato. C'è solo una soluzione corretta per un tale compito: combinare tutto il codice in un unico thread. Poi la risorsa sarà chiamata in ordine senza sincronizzazione. Il tempo di esecuzione del codice sarà lo stesso dell'esecuzione multi-thread. Mantenere la semplicità.

 
Zhunko:

1. La tua supposizione che la sincronizzazione non funziona è partita da te:

Ecco un po' di codice in cui la sincronizzazione funziona. Viene fornito un accesso atomico alla risorsa. Il resto è il tuo armeggiare con la convergenza dei fili. Ti ha suggerito di rivedere l'algoritmo sbagliato. L'unica soluzione corretta per un tale compito è quella di unire tutto in un unico thread. Poi la risorsa sarà chiamata in ordine senza sincronizzazione. Il tempo di esecuzione del codice sarà lo stesso dell'esecuzione multi-thread. Semplificare.


1. Non da una supposizione, ma dai risultati di un esperimento, che, tra l'altro, sono anche confermati dal vostro esperimento a p. 378. 378.

2. Il codice a pagina 378 fornisce solo l'accesso atomico. Non c'è una coda per l'esecuzione dei compiti. Può succedere che uno dei compiti richieda molto tempo per essere eseguito.