[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 383

 
Integer:


1. Non dalla supposizione, ma dai risultati dell'esperimento, che, tra l'altro, sono confermati dal vostro esperimento a p. 378.

2. Il codice a pagina 378 fornisce solo l'accesso atomico. I compiti non sono in coda per l'esecuzione. Può succedere che uno dei compiti non venga eseguito per molto tempo.

La coda viene creata dal sistema. Il suo ordine non è garantito. Può richiedere molto tempo per essere eseguito. C'è un altro modo in questo algoritmo difettoso che implica un ordine speciale di accesso a una risorsa condivisa? Non sapete quando arriveranno i tick sui diversi grafici, quando saranno i segnali nel TS, ecc. Che differenza fa, allora, in quale ordine si accede alla risorsa condivisa? Se il modulo è in sospeso in questo algoritmo, allora è corretto (lasciatelo aspettare). Ma non corretto, nel senso di costruzione dell'algoritmo.

Leggi Richter. Ha già descritto tutto correttamente.

 
Zhunko:

1. la coda è accodata dal sistema. 2. L'ordine di esecuzione non è garantito. L'esecuzione può richiedere molto tempo.

3. Cosa, c'è un altro modo in questo algoritmo difettoso, che implica un ordine speciale di indirizzare la risorsa comune?

4. Non sapete quando arriveranno i tick sui diversi grafici, quando saranno i segnali nel TS, ecc.

5. Che differenza fa allora in quale ordine si accede alla risorsa comune? Se il modulo è in attesa in questo algoritmo, allora è corretto (lasciatelo aspettare). Ma non corretto, nel senso di costruzione dell'algoritmo.

6. Leggi Richter. Ha già descritto il modo giusto.


Facciamo un secondo giro.

1. Il sistema non sa quale compito è stato effettivamente eseguito e quale è stato rifiutato all'interno del compito stesso. Cioè dal punto di vista del sistema il compito è fatto, ma poiché abbiamo lasciato solo un compito e bloccato il resto, dal nostro punto di vista solo un compito è fatto. Quindi è nostro compito assicurarci che i compiti siano regolarmente classificati in ordine di priorità.

1 и 2. La coda è allineata ma l'ordine non è garnito)))) Quindi non è allineato, ma viene fornito solo un accesso atomico,

3. Perché no? Tutto è nelle mani del programmatore.

4. Tutto è nelle mani del programmatore.

5. Se fosse in piedi. Ma non sta in piedi. Il compito non è accodato, solo eseguito o meno. Sul prossimo blocco (tick) è lo stesso, puramente dalla palla... non si sa chi guadagnerà per primo, e il resto è fuori dal campo.

6. Perché? Come potete vedere, non è sempre utile leggere libri intelligenti. Sembra che lei abbia letto, ma non capisce di cosa stiamo parlando. Non ho letto, ma capisco.

 
Integer:


Ripetiamo ancora una volta.

1. Il sistema non sa quale compito è stato effettivamente completato e quale è stato rifiutato all'interno del compito stesso. Cioè, dal punto di vista del sistema il compito è stato completato, ma poiché abbiamo lasciato solo un compito e bloccato gli altri, dal nostro punto di vista solo un compito è stato completato. Quindi è nostro compito fare in modo che i compiti siano regolarmente classificati per priorità.

1 и 2. La coda è allineata ma l'ordine non è garnito)))) Quindi non è allineato, ma viene fornito solo un accesso atomico,

3. Perché no? Tutto è nelle mani del programmatore.

4. Tutto è nelle mani del programmatore.

5. Se l'ho fatto. Ma non è così. Il compito non è accodato, viene solo eseguito o meno. Al prossimo blocco (tick), allo stesso modo, puramente dalla palla... non si sa chi guadagnerà per primo, e il resto è dietro il boro.

6. Perché? Come potete vedere, non è sempre utile leggere libri intelligenti. Sembra che lei abbia letto, ma non capisce di cosa stiamo parlando. Non ho letto, ma capisco.

Questa è la vostra ossessione per il codice complesso. Invece di semplificare, si torce il codice complicato per rompere la coda.

Anche io non ho voluto leggere Richter per molto tempo. Ma l'ho letto comunque. Le regole per costruire applicazioni multi-thread sono semplici. La cosa principale è mantenere la semplicità. Questa è la conclusione di Richter. Altrimenti, passerete molto più tempo a fare il debug che a scrivere. A proposito, non ho mai dovuto fare il debug di un'applicazione multi-threaded. Tutto ha funzionato subito.

 
Zhunko:

Questa è la vostra ossessione per il codice complesso. Invece di semplificare, si torce il codice complicato per rompere la coda.

Anche io non ho voluto leggere Richter per molto tempo. Ma l'ho letto comunque. Le regole per costruire applicazioni multi-thread sono semplici. La cosa principale è mantenere la semplicità. Questa è la conclusione di Richter. Altrimenti passerete molto più tempo a fare il debug che a scrivere. A proposito, non ho mai dovuto fare il debug di applicazioni multi-thread. Tutto ha funzionato bene subito.


Quanto è complicato? Quali codici complicati? È il minimo richiesto dal compito. E il suo approccio è noubertario. Tutto ciò che viene fatto deve funzionare in modo affidabile, non basandosi sull'effetto del caso.

Cosa c'entra Richter? Cosa ha a che fare questo con i sistemi multi-thread? Ricordate il problema originale che ha dato inizio a questa conversazione.

 
Puoi darmi un suggerimento? Print(" Itogo_Profit",Itogo_Profit, " Profit_pomnim " , GlobalVariableGet("Profit_pomnim" ) non sta compilando;
 
Dimka-novitsek:
Puoi darmi un suggerimento? Print(" Itogo_Profit",Itogo_Profit, " Profit_pomnim " , GlobalVariableGet("Profit_pomnim" ) non sta compilando;
Nessuna parentesi alla fine.
 
Oh. Grazie!!!! Spiacente, e sicuramente niente staffa. Non l'ho visto subito.
 
Dimka-novitsek:
Puoi darmi un suggerimento? Print(" Itogo_Profit",Itogo_Profit, " Profit_pomnim " , GlobalVariableGet("Profit_pomnim" ) non sta compilando;
Hai bisogno di un'altra parentesi di chiusura alla fine. Dovete risolvere questi problemi da soli. Il compilatore genererà un suggerimento di errore. Dovresti essere molto attento alle parentesi. Se ne scrivi una di apertura, scrivi una di chiusura e poi tra le due.
 
Integer:


Qual è il problema? Quale codice complicato? Questo è il minimo richiesto dal compito. E il tuo approccio è un approccio nouber. Qualsiasi cosa fatta dovrebbe funzionare in modo affidabile garantito, non a costo di affidarsi all'effetto del caso.

Cosa c'entra Richter? Che cosa ha a che fare con i sistemi multithread? Ricordate il problema originale che ha dato inizio a questa conversazione.

Bene, scrivetelo come volete. Non ho intenzione di convincerti. Vi ho detto tutto quello che potevo.

Il compito originale era quello di fare una sincronizzazione per fare riferimento alla dimensione del deposito. Il codice che ho scritto lo risolve perfettamente. Tutto è come dovrebbe essere. Con un tempo minimo di riferimento alla risorsa. Tutti i moduli saranno elaborati quasi nello stesso ordine delle richieste, con alcune eccezioni. Che non è importante.

Appositamente evidenziato per voi. Questa è una delle regole per le applicazioni multi-thread. Se hai dei thread che impiegano molto tempo per essere eseguiti, devi metterli in coda ed è importante, è un algoritmo difettoso. Devi rifarlo. Non si può scrivere così. Ti è permesso di fare tutto, però. Scrivere...

 
Zhunko:

1. Bene, scrivetelo come volete. Non ho intenzione di persuadervi. Vi ho detto tutto quello che potevo.

2. Inizialmente il compito era quello di fare la sincronizzazione per riferirsi alla dimensione del deposito.

Il codice che ho scritto lo risolve perfettamente. Tutto è come dovrebbe essere. Con un tempo minimo di riferimento alla risorsa. Tutti i moduli saranno elaborati quasi nello stesso ordine delle richieste.

4. Appositamente evidenziato per voi. Questa è una delle regole per le applicazioni multithreaded. Se avete dei thread che richiedono molto tempo per essere eseguiti, dovete metterli in coda ed è importante, questo è un algoritmo sbagliato. Devi rifarlo. Non si può scrivere così. Ti è permesso di fare tutto, però. Scrivere...


1. Non avevo domande per te, non sopravvalutare la tua missione.

2. La parola preferita è "sincronicità"? È un compito parallelo sequenziale.

3. Risolve il problema, ma non perfettamente. Il metodo Nuber - lamer lo risolve.

4. Coo-coo, svegliati!