Newsgroup: it.comp.programmare.win32
Titolo: [API] Un solo programma in esecuzione

Dunque, uso le API di Win98 con il C e ho il mio bel programmino.
Premesso che non so' molto della programmazione "avanzata" di Windows
(Hook, etc... le mie conoscenze sono un po' oltre le normali conocenze
di uno che ha letto tutto il Petzold (circa)) vorrei sapere come fare
per evitare che il programma venga aperto piu' volte
contemporaneamente.
Suppongo che nel WinMain bisogna in qualche modo "vedere" i programmi
in esecuzione e se trova gia' il programma in questione allora non si
carica (credo). 
Come fare?
--
Scritto da Gordon ;D
E-mail: "
tbe...@avpu.vg
" (attiva da Aprile 2003)

 contemporaneamente.
CreateMutex(NULL, TRUE, _T("NomeUnico"));
if (GetLastError() == ERROR_ALREADY_EXISTS)
    return 0;
-- 
Marco Barisione
http://spazioinwind.libero.it/marcobari/

 piu' volte contemporaneamente.
prima di come chiediti perchč. Anzi, te lo chiedo io: perchč? Qual č il 
problema nell'avviare una seconda istanza del programma?
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.0. C, C++ and ASM developers
                               and beta testers are welcome!

 problema nell'avviare una seconda istanza del programma?
io invece mi domando ...ma saranno fatti suoi ?
ci sono mille motivi per non creare una seconda istanza non č di certo
sbagliato farlo..
ciao :))

 problema nell'avviare una seconda istanza del programma?
Ci potrebbero essere 20.000 problemi, ma se non hai mai sviluppato 
software di grandi "dimensioni", magari non te ne sei mai accorto... ;) 
-- 
Luc.

 problema nell'avviare una seconda istanza del programma?
E non ti sei dimenticato di chiedere "quando" e "dove"? Insomma, una seconda
istanza non e' una cosa da prendere alla leggera, bisogna fare un po' di
indagine...

    return 0;
grazie.


problema nell'avviare una seconda istanza del programma?
siccome deve elaborare grosse quantita' di informazioni (e non tutti
hanno l'ultimo processore da 2 Ghz) e' bene che ce sia una sola volta
in esecuzione (senza altre copie contemporaneamente).
cmq non vedo dove sia il problema nel costringere una sola istanza
(specie se i programmi sono grossi e devono rimanere sicuri e
robusti).


 Ci potrebbero essere 20.000 problemi,
vorrei sapere quali sono quelli specifici di *questo* caso


 robusti).
di Word ne possono partire a decine, di istanze, senza problemi. E cosě 
di Borland C++ Builder. Di Visual Basic. Di VMware. Persino Explorer si 
puň far partire piů di una volta: un'istanza per desktop, ma pur sempre 
piů di un'istanza. Se ti risulta tanto difficile ammettere di non avere 
considerato tutte le possibili conseguenze dell'istanza singola ad ogni 
costo, almeno inventati scuse migliori


 non č di certo sbagliato farlo..
non in assoluto. Ma nella maggior parte dei casi č una cura del sintomo 
e non del male


 costo, almeno inventati scuse migliori
LoL ma quale saccenza :-)
Ti do almeno un motivo per cui un programmatore possa desiderare che
l'utente non avvii nemmeno per sbaglio (dato che un click di troppo può
scappare a chiunque) due istanze della stessa applicazione: lavora in
lettura&scrittura su file che esistono una ed una sola volta all'interno
d'una macchina, con privilegi esclusivi. Magari file troppo grandi per
essere copiati in versione temporanea.
Una situazione abbastanza concreta che si può presentare facilmente in un
ambiente reale.
Non tutti i programmi hanno ragione d'essere istanziati + volte, potrebbe
benissimo non servire oggettivamente a nulla avere due istanze d'un
applicazione in esecuzione sullo stesso client. Il fatto che un determinato
programma venga avviato più di una volta potrebbe dipendere in molti casi da
un errore dell'utente (dal click a vuoto al *non m'ero accorto d'averlo già
aperto*) ed in questo caso un controllo da parte del programmatore è una
*buona tecnica di prevenzione*.

ambiente reale.
interessante.. riesci a illustrare un caso il più concreto possibile
di un programma che voglia fare una cosa simile? nella maggior parte
dei casi simili che mi vengono in mente rendere istanziabile una sola
volta l'applicazione resta cmq inutile.
Se puoi cerca di spiegare un reale caso..
Uno sbirish che sta odiando la "documentazione" delle xlib

 Se puoi cerca di spiegare un reale caso..
A parte che l'ho già indicato, quando ho citato come esempio il caso in cui
un applicazione debba accedere in modo esclusivo ad alcuni file, a parte
questo, no problem, eccoti un altro esempio.
Io al lavoro, 2 anni fa, industria del milanese specializzata nella
produzione di bulloni (ottenuti a loro volta da tondini di ferro).
Fatturato: qualche miliardo, dimensioni dell'azienda: ciclopiche.
Il sistema era composto da una soluzione mista AS/400 PC, come spesso accade
in realtà di questo tipo.
I dati erano memorizzati/gestiti dal Mainframe (anche la parte contabile con
il solito pacchetto ACG, anch'esso da svariati milioni), l'analisi e la
reportistica fatta su PC per motivi a me ignoti (soluzioni & scelte che si
stratificano nel corso del tempo).
Ora: il mainframe sputava fuori file da diverse centinaia di M-Byte
(tabulati infiniti) con la storia di tutto quel che era successo minuto per
minuto nelle varie fasi di produzione etc, oltre a innumerevoli anagrafiche.
Questi file venivano passati nella parte NT della rete e qui processate da
un software, fatto da me su loro richiesta, che elaborava le statistiche e
produceva i reports.
Domanda: un solo motivo per cui quest'operazione dovesse essere svolta 2
volte contemporaneamente sullo stesso PC? Considerato oltretutto che avevo
automatizzato il tutto e veniva eseguita X volte nel corso della settimana
ad orari prestabiliti.
Risposta: nessuno.
Altro esempio: tribunale minorile di Milano, estate del 99. Software di
gestione delle cancellerie (le cancellerie sono il cuore cartaceo di un
tribunale), basato su rete NT (migrata ad NT da vecchi S38). Database
Oracle, applicativo misto in 2 componenti (Delphi e VB). Il soft consisteva
in una componente Server ed una componente Client. La componente Client, di
cui mi sono occupato io, era installata su ogni singolo PC del tribunale, un
centinaio circa. Lo scopo era la memorizzazione d'ogni singola transazione
avvenuta all'interno di quelle 4 mura, dal timbrino alla firmina.
Domanda: motivo per cui ci sarebbero dovute essere 2 istanze contemporanee
di quel programma sullo stesso client, considerato oltretutto che gli utenti
erano MOLTO pasticcioni ed incasinatori di proprio senza dovergli dare altri
motivi per confondersi le idee?
Risposta: nessuno.
Ecc ecc ecc

Uno sbirish che sta odiando la "documentazione" delle xlib
Xlib quelle di X Window ? Azz mi ricorda il mio lavoro di tesi del
94/95 (una specie di netmeeting ante litteram per X Window)
Auguri :-)
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email happyman69 (at) 
libero.it

Risposta: nessuno.
Tale genere di applicativi oggi come oggi usano come lato client il
web, non vedo nessun motivo per impedire che due broser vengano aperti
contemporaneamente sulla tua pagina.
Uno dei motivi per volere l'instanzibilità di due client sulla stessa
macchina è per esempio permettere che un unico client visualizzi più
report degli stessi dati contemporaneamente.
I vari lock per evitare che due persone lavorino contemporaneamente
sugli stessi dati devi farli comunque a monte (resta cmq l'eventualità
che macchine diverse lavorino sugli stessi dati) , quindi non vedo
alcun problema.
Ti sembrano irragionevoli come soluzioni?
Uno sbirish che ha dormito fino alle 11.20

Stefano "HappyMan" (Lago Maggiore - NO)
Uno sbirish per una Italia unita ( Bologna - SI )

 Ti sembrano irragionevoli come soluzioni?
Si mi sembrano molto irragionevoli. Innanzitutto, non è ASSOLUTAMENTE detto
che un applicativo del genere debba girare su WEB, anzi, considerate le
particolarità dell'interfaccia che spesso questo genere di prog hanno IMHO è
una cazzata mettersi a fare i salti mortali con JS/DOM/etc quando ci sono
comodissimi controlli d'ogni tipo. In secondo luogo, checchè ne piaccia
pensare alla comunità informatica la fiducia nelle soluzioni web-based
(detto da uno che attualmente programma 1 sito php a settimana oltre al
lavoro *normale*) è pressochè nulla. Avrei voluto proprio vedermi all'atto
di proporre una soluzione web in un ambito in cui se perdi un record nei
registri ti vengono a prelevare i Carabinieri, nel 99 poi LoL. Al di la di
questo comunque, aprire + d'una finestra all'interno d'un applicativo ANCHE
web ne diminuisce notevolmente l'usabilità e porta a situazioni d'errore,
dato che l'utente medio è incompetente e va guidato/aiutato. Gli MDI nascono
apposta per racchiudere in un unica istanza dell'applicazione + documents
(una cosa che su WEB ti scordi a patto di non fare salti mortali), un
applicazione di quel tipo ben progettata non necessita d'altro. Vuoi vedere
il report di altri dati? Cosa fai, avvii un altra istanza del programma????
Ma che, scherziamo????
Infine, trovo molto divertente che ti permetti di fare un analisi su un
prodotto arrivando a suggerire la tecnologia migliore per svilupparlo senza
sapere a conti fatti nulla di quel che era necessario fare con
quell'applicativo e come era necessario farlo.
Comunque, se gli esempi non ti hanno soddisfatto, te ne cito altri:
Un gioco, un MMORPG, Ultima Online. Considerato che giocare
contemporaneamente su + server è impossibile dal punto di vista umano e che
avere 2 Player collegati contemporaneamente allo stesso server è inutile se
non per fare qualche lamerata, ecco che un bel controllo a livello di client
sul numero d'istanze avviate è d'obbligo. Lo stesso si potrebbe dire del 99%
dei VG.
2000, Omnitel, un aggiornamento del software che gestisce tutta la bolgia
infernale di sim-card dei cellulari e tutto ciò che ad esse è correlato
dovuta all'anno 2k. Anche in questo caso era necessario un tool che
processasse i file provenienti da un Mainframe formattando e sostituendo
determinati campi in un determinato modo. Data la dimensione dei file ed il
fatto che cmq eran tabulati (quindi a dimensioni fisse), scelsi d'usare file
memory mapped in RW. Ovviamente, 2 applicazioni di questo tipo non sarebbero
mai potute funzionare, proprio per il fatto che vi era un accesso di questo
tipo ad un unico set di file d'una certa dimensione etc etc etc. Domanda:
Motivo per cui avrebbero dovuto usarne + d'una copia per volta? Motivo per
non includere un controllo che prevenisse una situazione di questo tipo?
Non per niente esistono diversi software in giro che impediscono all'utente
d'avviarne + d'una copia: es.: un qualsiasi programma d'IM, come ICQ, oppure
Outlook Express, o un programma di FileSharing (WinMX, Kazaa..) etc.

comodissimi controlli d'ogni tipo. 
Non entro nel merito della discussione ma questo passaggio lo
incornicio. Ci sono problematiche che possono essere risolte
ottimamente con un interfaccia web o comunque con soluzioni web based,
ma pensare che il web (e tutto quello che ne deriva) sia la soluzione
per ogni problema e che tutto o quasi  debba essere convertito in web
service, asp, php etc e' IMHO il piu' grande errore di fondo di questi
tempi. Errore che sappiamo bene continuera' ad essere ignorato e
avallato per ragioni di marketing.
Stefano "HappyMan" (Lago Maggiore - NO)


Outlook Express, o un programma di FileSharing (WinMX, Kazaa..) etc.
e allora? mi riporti dove ho scritto che "non bisogna mai controllare
l'esistenza di una seconda istanza?" il mio punto voleva essere sul
fatto che spesso si risolve in modi diversi piuttosto che controllare
dal secondo programma lanciato l'esistenza di una precendente istanza.
E cmq che vari applicativi checkino l'esistenza di una precedente
istanza, non significa affatto che facciano il loro lavoro nel modo
giusto ( e ripeto che non ho ancora detto che è una soluzione
sbagliata ).
sbirish

Stefano "HappyMan" (Lago Maggiore - NO)
sbirish

 siano pesanti?), ma non mi ha mai dato alcun problema
Quanto ti pagano per pubblicizzarlo cosě spudoratamente?
Kiuhnm

rendere istanziabile una sola volta l'applicazione resta cmq inutile.
La tua mente deve essere un ambiente molto piccolo ;-)
Ti posso assicurare che i casi in cui un'applicazione deve essere
istanziata una sola volta, nella realtà (e non nei boschetti della
fantasia del programmatore) sono moltissimi.  A me è capitato di avere
utenti che lanciano due/tre/quattro/cinque volte l'istanza del
programma gestionale che ho fornito loro (semplicemente perché non
fanno 1 doppio click sull'icona, ma 5 o 6), con tutto ciò che ne
consegue.
-- 
Andrea Laforgia
Gioca a Tetris !
http://www.geocities.com/andrealaforgia/mytetris.zip

web, 
...ed in moltissimi casi è una scelta sbagliata.


tempi.
Concorde al 1000 per 1000.


ripercussioni sul client.
Non mi freghi... Questo è il punto precedente riscritto ;-)


consegue.
nella maggior parte dei casi il problema viene aggiunto dalla
soluzione che tu dai, non è insito nella natura di programma
gestionale l'impossibilità di istanziarlo due volte.
Impedire di poter istanziare una seconda istanza di una applicazione è
di solito una toppa per un problema più grande. 
O forse "la tua mente è un ambiente troppo piccolo" per dedurlo?
Per quanto riguarda la tua giocosa assunzione che io non stia facendo
riferimento a casi reali, ho già chiesto di portare dei casi in cui
sia necessario impedire l'istanziabilità.
Ora, parli del tuo "gestionale", suppongo che il tuo problema sia la
consistenza dei dati nel db. Cosa che dovresti già garantire con il
db, quindi non vedo alcun motivo per impedire all'utente di lanciare
due volte l'applicazione.
Diciamo che ti sei fregato della coerenza dei dati durante la
possibile istanziazione di una seconda applicazione ed hai messo un
tappo impedendo che l'applicazione fosse lanciabile due volte. Mi
sembra più vicino alla realtà.
Non sono così avulso dal mondo.. nè la mia mente è così ristretta da
non riuscire a pensare a dei casi in cui non si vuole una seconda
istanza di una applicazione, mi sembra però che siano casi ben rari.
sbirish

 sbagliata ).
Notevole, come ho scritto da quel che hai detto e da come l'hai detto
appariva completamente differente la cosa.
Se questo и il tuo pensiero, allora ti posso dire che siamo perfettamente
d'accordo.

istanza di una applicazione, mi sembra però che siano casi ben rari.
Basta che la seconda istanza sia inutile.
Lo vedi che il tuo mondo è piccolino ? :)


Non mi freghi... Questo è il punto precedente riscritto ;-)
sbirish

ho paura che comunque avresti bisogno di dare supporto tecnico.
La necessità di supporto tecnico non scompare con la soluzione web.
Ah dimenticavo ! per "supporto tecnico" tu intendi spostare le icone !


d'accordo.
avrei detto che avresti dovuto permettere di istanziare due
applicazioni nel primo esempio che hai portato.
scusa se non sono stato chiaro come avrei voluto.
sbirish

Lo vedi che il tuo mondo è piccolino ? :)
lo vedi che non hai capito nulla di tutti i miei post?
e le faccine evitale con me, danno un impressione di falsità che non
sopporto.
sbirish

;-)
.. evita le faccine.
sbirish

lo vedi che non hai capito nulla di tutti i miei post?
Per auto-punizione, sto per andarmi a chiudere in un convento di
monaci tibetani...


 istanze aperte.
Anche nel caso dei mail/newsreader vedo poca utilità ad avere due istanze.
-- 
Marco Barisione
http://spazioinwind.libero.it/marcobari/

non riscire a vedere problemi un pò più grandi.
Eh certo, guarda, mi comprerò degli occhiali spessi un dito...



sbirish

Rileggi quanto ho scritto, evidentemente non hai compreso bene.
devi far stampare al client 200 fogli? presenti un documento pdf,
l'utente clicka su stampa ed hai la stampa.
Cosa non avrei capito?
sbirish

l'utente clicka su stampa ed hai la stampa.
La stampa la deve fare IL CLIENT, in modo INDIPENDENTE dagli altri
client.


da un altra tty/shell:
E dalle, ma ci fai o ci sei ?
Si sta parlando di utilità o meno.


client.
sbirish

Si sta parlando di utilitą o meno.
ti sembra inutile che due utenti diversi possano avere
accesso contemporaneamente alle loro mail?
sbirish

da strampare?
Onestamente, non ti facevo cosě duro di comprendonio.
Il client deve produrre e stampare in proprio.


accesso contemporaneamente alle loro mail?
Evita di far passare gli altri per imbecilli.
E` chiaro che due utenti diversi DEVONO avere accesso
contemporaneamente alle loro mail, quello che Marco voleva dire è che
non ha senso che LO STESSO utente abbia due istanze del proprio
mailer/newsreader aperte.  Questo ti viene confermato dal fatto che se
lanci due volte Outlook Express, l'istanza che viene attivata è sempre
e solo 1 sola, idem, per esempio, per Forte Agent, il mio newsreader.


>
Hai ragione, non avevo specificato un caso del genere, se dovessi scrivere 
un mailreader questo caso lo tratterrei correttamente.
Purtroppo non sono molto pratico di Unix e non so se quell'-u vuol dire di 
cambiare utente o semplicemente di leggere la posta di quell'utente.
Nel primo caso il codice di esempio con i mutex che ho scritto funziona 
perfettamente.
Nel secondo caso si sarebbe potuta adottare una tecnica simile a quella che 
usa Hamster, cioè crea un mutex del genere "nome_programma 
path_del_database_della_posta".
Questo metodo ha il difetto di non prevenire il lancio del programma se si 
cambia utente.
Penso comunque che ci sia modo (non ne ho mai avuto bisogno e quindi non lo 
so) perché il mutex creato sia visibile a tutti gli utenti, non solo al 
creatore.
Un'altra possibile soluzione (che non mi piace molto) è quella che usa 
Agent, mette un file nella directory con i dati per indicare se è avviata 
un'isanza.
L'unico programma che mi ricordo di aver scritto che non si può avviare in 
copie multiple si chiama TextCopier e permette di copiare con una 
combinazione di tasti del testo da controlli che normalmente non lo 
permettono come gli static box. Non ha senso che ne siano avviate per un 
singolo utente più copie.
Un altro esempio che  mi viene in mente è Opera, non apre una nuova 
finestra indipendente per ogni pagina ma crea delle child window 
(personalmente lo trovo comodissimo). Quindi se clicco nuovamente 
sull'icona di Opera mi porta semplicemente in primo piano la finestra già 
esistente.
C'è però l'opzione per aprirle nel modo classico di internet explorer.


di Word ne possono partire a decine, di istanze, senza problemi. 
a me decine di Word danno problemi. Te lo assicuro!
--
Scritto da Gordon :D

Il client deve produrre e stampare in proprio.
sposti sul web per avere un client minimale e poi
richiedi che sia il client a processare i file per stamparli?
non vedo l'utilità di una cosa simile.
se puoi collegarti al server per prendere i dati puoi allo stesso
modo collegarti per avere la stampa.
Se il problema è poter lavorare offline con dei dati che "hai
scaricato", decisamente non trovo alcuna soluzione se non appoggiarsi
ad un client che faccia quel lavoro, il che decisamente farebbe
propendere per la soluzione che tu proponevi e non usare il web 
come client.
sbirish

 e non del male
le tue non sono motivazioni .....
cmq un motivo validissmo č quello che spesso č piů sicuro non far eseguire
certe operazioni eprchč potrebbero creare problemi.Non sempre si riesce  a
creare facilmente una soluzione che preveda tutti pericoli di una
multiutenza.Io ultimamente mi son trovato a dover usare solo un'istanza
eprchč non potevo gestire il mio hardware se non con controlli lunghi da
effettuare .Se proprio vuoi un motivo valido oltre a quelli gia citati č
quello che con una sola istanza spesso si risparmia tempo e denaro :))
ciao

e solo 1 sola, idem, per esempio, per Forte Agent, il mio newsreader.
il che non č affatto equivalente a dire che possa esistere un solo
programma in esecuzione. 
Come faresti ad impedire che due istanze del tuo newsreader non 
possano essere attivate contemporaneamente?
sbirish


sbirish

 l'utente clicka su stampa ed hai la stampa.
Personalmente non mi piace molto come soluzione.
Si parlava più o meno dello stesso argomento sulla mailing list di Python 
un paio di settimane fa. Molti hanno suggerito di non stampare direttamente 
ma generare pdf con l'ottimo reportlab. Io però sono rimasto della mia idea 
che all'utente tipico di Windows la cosa non piaccia molto (anche se si può 
direttamente far stampare da Acrobat Reader con COM).
Avere un vero client porta a tutti i vantaggi di cui parla Andre Laforgia, 
non averlo a quelli di cui parla sbirish.
Conosco una ditta che produce gestionali che ha avuto il problema client 
sì, client no. Hanno risolto con un client che si occupa solo di creare 
interfacce grafiche in base a  ciò che gli "dice" il server, avendo quasi 
tutti i vantaggi di entrambe le soluzioni.


C'è però l'opzione per aprirle nel modo classico di internet explorer.
non so mica quanto classico.. le successive istanze dell'explorer mi
sembra girino inprocess e non siano un processo separato ( questo è
vero perlomeno in alcuni casi.. credo sia customizzabile il modo in
cui si comporta )
ciao, sbirish 

modo collegarti per avere la stampa.
Inaccettabile.  La costruzione di una stampa puň essere un'operazione
lunga e puň essere richiesta in concomitanza da piů client.  Oltre al
fatto che il risultato, trattato come file, puň occupare molto spazio.
Con il modello client/server classico, invece, io ho un'elaborazione
distribuita.  Considera anche tutto il giro disgustoso a cui č
sottoposto l'utente: fa una richiesta di stampa, aspetta 1 ora e 1/4
che il file PDF gli arrivi, lancia un lettore PDF e stampa.
Senza contare che in questa sequenza puň commettere errori.
Concludo questo battibecco noioso.


il motivo del -u
rileggendo mi sono reso conto di aver scritto qualcosa di
illeggibile..
riformulo...
da utente sbirish scrivo su e divento utente root.
nelle mie varibili di ambiente tuttavia restano alcune  
delle var di sbirish.. mail per esempio:
unboffable# set | grep mail
mail    /var/mail/sbirish
con -u root forzo il mailer a leggere la mail dell'utente 
root ignorando la var mail..
tutto li'
ciao sbirish

possano essere attivate contemporaneamente?
????????????????????????????????????????????
Il mio newsreader implementa __di per sè__ questo meccanismo.


On Sat, 08 Mar 2003 17:46:37 +0100, Andrea Laforgia <x@x.x> wrote:
[snip]
il quoting selettivo è una pratica deprecabile.
ed è quello che hai fatto tentando di travisare le mie parole.
sbirish

ed è quello che hai fatto tentando di travisare le mie parole.
Sei ridicolo, io ho risposto ai punti che hai esposto.
Quello che è veramente deprecabile è questo tuo modo di fare
"spallucce".


Il mio newsreader implementa __di per sč__ questo meccanismo.
te la riformulo: come scriveresti tu questo meccanismo?
sbirish

"spallucce".
si, a tutti tranne all'ultimo che era il succo del mio reply, che hai
casulmente tagliato via.
sbirish

casulmente tagliato via.
Il succo del tuo reply trae la conclusione _sbagliata_, ovvero che si
voglia lavorare off-line.  Metto un punto a questa questione.


CONTEMPRANEAMENTE la stessa macchina da remoto.
Smettila di arrampicarti sugli specchi.
Ora citi un caso specifico come l'utilizzo da remoto, come "pezza" per
la discussione generale.  L'utilizzo da remoto non è ciò di cui noi
tutti si sta parlando.  E` chiaro che non puoi progettare un programma
senza tenere in conto come verrà usato dai tuoi utenti e se prevedi
che più utenti debbano usarlo via "terminal services" vuol dire che lo
devi progettare perché rispetti questa specifica.  Mi sembra ovvio che
se prevedi che due utenti debbano poter lanciare il programma
contemporaneamente, non DEVI impedirne una
seconda/terza/quarta/quinta/sesta/settima istanza, se lo facessi non
staresti rispettando le specifiche di progettazione del programma.
Quindi, in questo caso, non solo è utile, ma è DOVEROSO, che il
programma si possa lanciare più volte.  **Ben diverso**, però, e qui
mi riaggancio al discorso generale, è dire che siccome esistono casi
in cui lanciare un programma più volte sulla stessa macchina è
giustificato, tutti gli altri casi in cui si renda utile non farlo,
sono bachi di progettazione.  Questo è inaccettabile.


Aggiungo: pongo un IGNORE THREAD su tutto il thread, quindi non
risponderò ulteriormente.


sono bachi di progettazione.  Questo è inaccettabile.
e infatti non l'ho mai detto. 
Andrea io non sto nè dicendo che le applicazioni vadano portate sul
web, nè ho mai detto che scrivere una applicazione che permetta di
lanciare una sola istanza di se sia _un bug_.
sbirish

 cui si comporta )
Sì, si può personalizzare, di default (o almeno 2 anni fa era così) le crea 
nello stesso processo ma, se si clicca sull ícona crea un nuovo processo. 
Un paio di anni fa avevo impostato di creare ad ogni apertura di finestra 
un nuovo processo perché avevo crash molto frequenti, almeno non crashava 
tutto.


 tecnica di *prevenzione*.
fesserie. Tutti i programmi che uso si possono avviare più di una volta 
contemporaneamente, indipendentemente da che cosa facciano, o da quanto 
siano complessi. Se questa tua sessione di arrampicata su specchi fosse 
un vero problema, perchè non vedo nessun programma comportarsi nel modo 
che descrivi? forse perchè quello che dici è semplicemente falso, o una 
visione del problema dal punto di vista sbagliato
-- 
  < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
      Don't stand, REACT!      version 0.1.0. C, C++ and ASM developers
                               and beta testers are welcome!

 sbagliato
- Babylon Translator
- Numega SoftIce :-)
- Trw 2000
- Outlook Express
- WinAmp (se non esplicitamente selezionato nelle impostazioni)
- Splinter Cell (che va in crash!), Unreal 2 e praticamente qualsiasi altro
gioco *pesante*.
La lista sarebbe infinita quindi mi fermo qui.
Kiuhnm

 window (personalmente lo trovo comodissimo)
è un discorso diverso. Avendo un altro profilo, anche Opera può partire 
due volte. Comodo per provare una nuova versione senza rischi


 Quanto ti pagano per pubblicizzarlo cosě spudoratamente?
due pagine di codice sorgente di Windows al giorno. Ne vuoi un po'?


 a me decine di Word danno problemi. Te lo assicuro!
singolarmente. Non in quanto decine contemporaneamente. E Word 97 parte 
in meno di un secondo e mezzo, mostrando almeno uno splash screen quasi 
istantaneamente, cosě non c'č mai il dubbio se sia partito oppure no: č 
*cosě* che si risolvono i problemi


 farlo, più utenti possono usare la stessa macchina.
capita giusto a proposito. In Terminal Services hanno dovuto separare i 
namespace degli oggetti di sincronizzazione delle sessioni, proprio per 
il proliferare di programmi che abusavano di mutex. In Unix il problema 
non è mai esistito, perchè tutti i programmi hanno sempre fatto la cosa 
giusta: usare *la risorsa stessa* come mutex


 quindi non ci sono scenari di race condition
Nell'unico programma che ho scritto che non ammette istanze multiple non 
avrebbe un gran senso usare il lock su un file e va benissimo l'uso di un 
mutex (a meno che non mi fai notare qualche possibile problema tale da 
modificare una piccolissima utility che probabilmente uso solo io).


 La lista sarebbe infinita quindi mi fermo qui.
anche la mia lo sarebbe. Giochiamo a chi trova quella più infinita? :-P


 :-P
A me bastava dimostrare che la mia lista non coincide con l'insieme vuoto...
Kiuhnm

 visione del problema dal punto di vista sbagliato
Notevole :-) Prova ad avviare due volte Outlook Express all'interno dello
stesso ambiente/utenza, oppure prova ad avviare due volte ICQ, o Win-MX,
etc, poi dimmi se s'avviano due volte :-)
Il tuo errore è nella presunzione di voler indicare una fantomatica
*soluzione migliore* senza tener conto del fatto che possono benissimo
esistere situazioni che richiedono tutt'altro, in cui una seconda istanza
non ha davvero senso d'esistere.

Indubbiamente ci siamo solo fraintesi a vicenda :-)

 Prova ad avviare due volte Outlook Express [...] ICQ, o Win-MX, [...]
questo cosa dimostra? che non leggi quello che scrivo o non lo capisci. 
O che non capisci come funzionano quei programmi, e come ottengono (e/o 
richiedono) l'istanza singola


 vorrei sapere quali sono quelli specifici di *questo* caso
Ecchennesò! 
-- 
Luc.

due pagine di codice sorgente di Windows al giorno. Ne vuoi un po'?
? ma che lavoro fai ??
Stefano "HappyMan" (Lago Maggiore - NO)
--
Personal Web 
http://www.sgr.info
Email happyman69 (at) 
libero.it

 richiedono) l'istanza singola
Dimostra che esistono esempi concreti di programmi + che diffusi che
soffocano la libertà d'espressione dell'utente incatenandolo alla dura e
limitante realtà dell'istanza singola, laddove perfettamente inutile (e
vediamo se anche questa volta l'ironia è sprecata).

 ? ma che lavoro fai ??
Secondo me č studentessa...
Kiuhnm

 Secondo me č studentessa...
spia del governo russo


 contratto temo non l'abbiano ancora inventato
pessima traduzione mia di "contractor"


 *cosě* che si risolvono i problemi
Mah...
Se Word in se e' un problema, non vedo perche' avviarne piu' di uno dovrebbe
essere una soluzione...
de gustibus...
Comunque non e' cosi' che si risolvono i problemi, a volte ci sono dei
santissimi compromessi tra la funzionalita' ideale e il mondo reale. IMHO
avviare 2 istanze della stessa applicazione non e' utile, lo puoi fare per
sbaglio, forse per *alcune* applicazioni puo' essere utile, ma sempre IMHO
non e' la norma (Mi domando a cosa serva avviare 2 istanze di Word, quando
una sola istanza gestisce piu' documenti in contemporanea...). Io mi
immagino sempre l'amministratore della ditta anonima, che avvia per sbaglio
2 istanze di un programma, e fa confusione tra i 2... Secondo me una cosa
del genere e' da evitare.
In un mondo ideale, con RAM illimitata e processore ultraveloce, 2 istanze
di un programma non danno fastidio a nessuno. Nel mondo reale la RAM e'
limitata, e i processori sono quello che sono... 2 istanze di Word con 2
documenti diversi, anche se ci mettono 1 secondo a partire (su che sistema
operativo, e con quale hardware?), una volta caricate in memoria
"appesantiscono" tutto il resto.