Gli stream .NET sono come flussi "reali"?

3

Per me un flusso implica che dovrei essere in grado di:

  1. Metti le cose da una parte e ricevila dall'altra parte nello stesso ordine.
  2. Fai queste cose allo stesso tempo. cioè aggiungi continuamente alla parte superiore del flusso e legge dal basso.

Il problema è che solo i flussi sembrano mantenere un singolo puntatore che è condiviso dalle operazioni di lettura e scrittura.

Sto semplicemente interpretando la parola 'stream' in modo diverso o sto interpretando correttamente e mi manca qualcosa di fondamentale.

(Sto usando il tipo MemoryStream come un tipico esempio di un flusso generale.) Forse ci sono altri flussi che supportano questo?)

    
posta BanksySan 15.07.2017 - 12:19
fonte

2 risposte

5

Put things in one end and receive it from the other end in the same order

Questa sarebbe una definizione ragionevole di un flusso, e dopo tutti questi anni a volte mi trovo ancora a cadere in questa trappola mentale per un momento. Ma non è così che funzionano gli stream in .NET.

Pensa invece a un driver I / O: puoi scriverci, puoi leggerlo, puoi cercare. A volte puoi fare solo un sottoinsieme di queste cose.

L'implementazione dietro l'astrazione Stream interagisce quindi con un file, una connessione di rete o, nel caso di MemoryStream , semplicemente con una cianfrusaglia di ... beh, Memoria.

Di solito ha senso separare mentalmente i tuoi stream in read-stream e write-stream. Dietro un flusso di lettura c'è una funzionalità che ti permette di leggere qualcosa da qualche parte, mentre i flussi di scrittura ti permettono di scrivere qualcosa da qualche parte. Il vero scopo di un flusso è di permetterti di non pensare a cosa stai leggendo o scrivendo.

    
risposta data 15.07.2017 - 13:07
fonte
4

La tua interpretazione si applica a una coda, non a un flusso. Una coda offre metodi da aggiungere ad una estremità (Enqueue) e prendere dall'altra estremità (Dequeue), in modo FIFO.

Lo streaming in senso software esprime il carattere seriale, continuo, non tanto il carattere di trasporto.

    
risposta data 15.07.2017 - 13:03
fonte

Leggi altre domande sui tag