Newsgroup: it.comp.lang.c++
Titolo: sincronizzare stream

Ciao,
esiste in c++ la possibilita` di lockare uno stream?
Vorrei usare uno stream da vari thread e non ho trovato nulla a riguardo
in nessuna guida/libro.
Frugando in iostream.h ho trovato:
extern istream& lock(istream& ins);
extern istream& unlock(istream& ins);
extern ostream& lock(ostream& outs);
extern ostream& unlock(ostream& outs);
ma non ho idea di come usarli e se effettivamente si riferiscano a cio`
che sto cercando. Qualcuno sa darmi una mano?
Grazie, Simone.

 ha scritto:


 > extern ostream& unlock(ostream& outs);
Mi spiace deludervi ma lock e unlock di stream cosi' come problemi di
sincronizzazione interthread o interprocess non sono contemplati dallo standard.
E' tutta roba system dependent.
--
Andrea Ferro
---------
Brainbench C++ Master. Scored higher than 97% of previous takers
Scores: Overall 4.46, Conceptual 5.0, Problem-Solving 5.0
More info 
http://www.brainbench.com/transcript.jsp?pid=2522556

 standard. E' tutta roba system dependent.
aaaaaaaaaarrrgg.
ciao

 Andrea Ferro
Facendo ricerche in rete ho trovato questo:
http://www.science.uva.nl/cng/documentation/Sun_Compilers_5.0/stdlib/stdug/loc_io/23_2.htm
nell'indice dice: "Standard C++ Library - Iostreams and Locales User's
Guide".
Premettendo che non so nulla di standard, da questo manuale mi pare di
capire che i lock sugli stream sono della libreria standard! (ma standard
di che?)
Potresti chiarirmi le idee a riguardo?
grazie, Simone.

 Potresti chiarirmi le idee a riguardo?
Credo di si. L'indice dice effattivamente che sta parlando della Standard
Library. Ma non risulta chiaro che sta parlando di una specifica implementazione
della Standard Library (quella di Rogue Wave).
Lo standard dice cosa ci deve essere nella libreria e poi lascia libero ciascun
implementatore di aggiungerci quello che vuole.
Un programma e' standard e portabile se usa solo quelle parti della
implementazione della libreria fornita con il compilatore che sono richieste
dallo standard.
Pertanto la libreria a cui quella documentazione fa riferimento e' una libreria
standard se implementa tutto cio0 che lo standard richiede. Puo' implementare il
meccanismo di lock, ma non e' obbligata.
Il tuo programma sarà standard e portabile se userà solo le parti della libreria
che sono richieste dallo standard e farà a meno delle aggiunte (system
dependent).
Che poi la documentazione della libreria dovrebbe specificare cosa e' richiesto
dallo standard e cosa e' una aggiunta di Rogue Wave e' un altro discorso (e puo'
anche essere che lo faccia, non ho verificato).


 Potresti chiarirmi le idee a riguardo?
Lo standard del linguaggio non contiene la parola "lock" e contiene una
sola volta la parola "thread", tra l'altro in un contesto che non si
riferisce al multi-threading. Ciascun per se'.
Ciao,
Nicola

 (system dependent).
Ciao, grazie mille per la esauriente spiegazione.
Dove posso trovare le specifiche dello standard del C e del C++???
Sto` facendo piu` attenzione possibile alla portabilita` del mio
progetto ma questo dei thread e` un bel problema :(
Ciao ciao.

riferisce al multi-threading. Ciascun per se'.
riguardo a cosa usa la parola "thread"?
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

 riguardo a cosa usa la parola "thread"?
Dice "thread of control", inteso come analogo di "control flow".
Ciao,
Nicola

 progetto ma questo dei thread e` un bel problema :(
Sono documenti pubbliati da ISO e ANSI. Li puoi ordinare nelle librerie
specializzate o anche comperarli via internet (sia in forma cartacea che
elettronica). La versione PDF dello standard C++ costa se non sbaglio 18$.
Ovviamente sono in inglese.
Comunque non ci troverai assolutamente nulla sui thread. I thread ed il
multithreading non sono standard, punto e basta.
Non puoi scrivere codice multithreaded portabile in senso standard.
Il meglio che puoi fare e' usare una libreria di terze parti che esista sia
nella versione Win, che in quella *X che in quella Mac o in qualunque altra che
ti serva. E sperare che le varie versioni siano realmente identiche (di solito
alcune difference ci sono, non tanto nelle funzioni e/o nei parametri ma nel
funzionamento dei thread a runtime che dipende dall'OS).


 wrote in message
news:lPRLO4BAMO3RtTd63=iiTWJFL=f...@4ax.com...

15.1
...
2 When an exception is thrown, control is  transferred  to  the  nearest handler
with  a  matching type (15.3); "nearest" means the handler for which the
compound-statement, ctor-initializer,  or  function-body  following  the try
keyword was most recently entered by the thread of control and not yet exited.


, "Andrea Ferro"
