Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 03-08-2004, 11.00.26   #346
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
E quindi come dovrei fare
Posso mettere un'altro buffer, ad esempio
char buffer[50];
Ma poi come devo gestirlo?
Alhazred non è collegato   Rispondi citando
Vecchio 03-08-2004, 11.12.52   #347
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Sto pensando al modo più semplice e meno invasivo per farlo...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 03-08-2004, 11.21.51   #348
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ok, allora attendo, grazie
Alhazred non è collegato   Rispondi citando
Vecchio 04-08-2004, 08.57.57   #349
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
... E qui viene buono un'altra volta l'utilizzo del timestamp.. scusate se sono fissato...

Dunque, a mio avviso il modo per ovviare in maniera meno invasiva al problema seguente è:

Implemetnare nel tipo dati strutturato un campo timestamp, come discusso nei post precedenti:

L'istanza attiva registra il timestamp una volta FINITE tutte le transazioni sulla memoria condivisa, a questo punto viene rilasiato il semaforo e la seconda istanza prende il controllo...

Si passa all'analisi dei dati e alla lettura del nuovo colpo, questa operazione può richiedere pochi millisecondi, a questo punto nella funzione di lettura dei dati si procede alla lettura del timestamp stesso e alla generazione del timestamp attuale...

Se la differenza tra il timestamp attuale e quello registrato dall'istanza precedente in memoria condivisa è troppo piccola, allora vuol dire che le varie "getch()" precedenti hanno letto dei valori in un buffer fasullo e bisogna considerarli non validi e procedere ad una seconda rilettura ...

Inoltre: nei precedenti post è stato chiesto a cosa servisse l'uso di un timestamp all'intero di processi condivisi .. rispondo che è molto utile, in questo caso potrebbe anche "salvarti" nel caso in cui una delle istanze vada in crash, semplicemente permettendoti di gestire un timeout ...

Fai un fischio se ti serve codice

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 04-08-2004, 10.35.48   #350
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Per il codice aspettiamo, provo a scrivere qualcosa io e vediamo se mi riesce

Ho una domanda sul timestamp.
Non formattato esce una cosa del tipo 1091608278
cosa sono? millisecondi? Se scrivo ad esempio
...
time_t tempo1;
time_t tempo2

time(&tempo1); //e risulti per esempio 1091608278
...
time(&tempo2);
if(tempo2 > tempo1 + 5);
...

l'istruzione if controlla se tempo2 è maggiore di 1091608278+5 ( e cioè 1091608283)?
Alhazred non è collegato   Rispondi citando
Vecchio 04-08-2004, 10.38.52   #351
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Esattamente, millisecondi dalla mezzanotte della notte dei tempi .. (guarda l'istruzione 'time()').. il time_t è praticamente un long, è quindi possibile fare le operazioni che hai citato .. se il compilatore fa lo schizzinoso, fai un bel casting...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 04-08-2004, 11.39.44   #352
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ho messo questo codice subito prima di while((Answer != 's') && (Answer != 'S')) in Colpo()
Codice:
tempo1 = p->timeStmp;
time(&tempo2);
while(tempo2 < tempo1 + 2)
{
	printf("\ntempo1: %ld\n",tempo1);
	printf("tempo2: %ld\n",tempo2);
	scanf(&buffer);
	time(&tempo2);
}
i printf sono per vedere a quanto sono pari i timestamp, li toglierò quando sarà tutto ok, tempo1 e tempo2 sono variabili locali di Colpo() dichiarate time_t, tempo è globale in quanto la sovrascrivo in ogni funzione che legge e/o scrive in memoria condivisa in modo da aggiornarla, buffer è dichiarata char.
Così com'è cicla solo se do invio, altrimenti resta in attesa, ferma su scanf, se invece metto getch() per farla ciclare devo premere invio ogni volta che si arriva a getch() (ed è ovvio, aggiungerei).
Come posso fare per far partire il ciclo senza dover premere invio?

Edit: avevo dimenticato 2 righe prima del while.
Alhazred non è collegato   Rispondi citando
Vecchio 04-08-2004, 11.48.58   #353
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Guarda...
io implementerei il tutto nel ciclo principale dove fai le getch() se alla fine del ciclo principale (quindi prima di valorizzare mArray), ti rendi conto che l'intervallo di tempo attuale è troppo vicino all'intervallo di tempo registrato in memoria condivisa allora molto probabilmente l'utente non avrà fatto in tempo ad inserire i valori ma i valori saranno stati presi erroneamente dalle getch in un buffer non valido, a quel punto resetti tutte le variabili e fai il ciclo principale da capo...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 04-08-2004, 11.56.06   #354
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ma se inserisco solo la coordinata della colonna nella console sbagliata, quando sarà realmente ora di inserire le coordinate in quella console, apparirà inserita solo la lettera della colonna, e attenderà il numero per la riga, non si arriva in fondo per poter fare il controllo ed eventualmente riproporre l'inserimento delle coordinate, per questo il controllo vorrei farlo prima.
Alhazred non è collegato   Rispondi citando
Vecchio 04-08-2004, 11.58.13   #355
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Potresti scrivere un controllo sotto ogni getch()...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 04-08-2004, 11.58.44   #356
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Oppure potresti scrivere il conrollo direttamente nella condizione del while... cosa molto più elegante

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 04-08-2004, 12.06.00   #357
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Non so se è bello, ma ho fatto il controllo così e funziona
Codice:
time(&tempo1);
time(&tempo2);
while(tempo2 < tempo1 + 2)
{
	buffer = getch();
	while((c_col < 65) || (c_col > 74)) 
	    c_col = getch();
	time(&tempo2);
}
La stessa cosa attorno ai c_raw.
Commenti?
Alhazred non è collegato   Rispondi citando
Vecchio 04-08-2004, 12.08.47   #358
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Il principio è esatto e l'hai capito .. forse a colpo d'occhio ti renderai conto che c'é del codice ridondante che può essere quindi inglobato nella condizione del ciclo principale ..

E' solo una questione stilistica, nulla da dire sulla tua implemetnazione

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 04-08-2004, 12.11.36   #359
Alhazred
Made in Japan
Top Poster
 
L'avatar di Alhazred
 
Registrato: 04-07-2001
Messaggi: 4.461
Alhazred promette bene
Ti riferisci ai time(&time1); ?
Alhazred non è collegato   Rispondi citando
Vecchio 04-08-2004, 12.12.04   #360
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Aggiungo ..

il T1 va chiaramente acquisito dalla memoria condivisa, mentre il T2 va generato all'istante...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
La grande battaglia dei super eroi! Sbavi Chiacchiere in libertà 83 27-02-2009 10.43.39
battaglia navale in c# Joy&Lu Programmazione 3 01-09-2008 15.08.58
Il Signore degli Anelli - La Battaglia per la terra di mezzo Darth Maul Masterizzazione Giochi Games 0 01-09-2006 18.16.18
[C] Battaglia Navale (versione client server) in Linux Nanri Programmazione 11 06-08-2005 14.50.27

Orario GMT +2. Ora sono le: 17.19.52.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.