Ho un'applicazione OpenGL che traccia i dati in tempo reale. Mi piacerebbe avere un server TCP in background che accetterà i dati da un client senza bloccare una chiamata. I dati sono originariamente un array di 2048 doppi. Una volta che questa matrice di dati arriva, ho bisogno di metterla in un buffer circolare circolare che viene letto dal programma OpenGL in primo piano.
Inizialmente ho provato il codice del server TCP asincrono da Microsoft ma questo codice si blocca su listener.BeginAccept
.
Ho pensato che questo codice avrebbe funzionato in background ma ovviamente no. Quindi ho bisogno di eseguire il server in un thread in background e non bloccare su una lettura. Potrei usare un server molto più semplice dal momento che ho un solo client alla volta da gestire.
Ora il buffer circolare dell'array è una classe statica. Per scrivere ad esso è un semplice CircularBuffer.Write(double buffer);
La classe si prende cura di tutti gli indici.
Quindi quello di cui ho bisogno è un server TCP thread-safe in esecuzione in background che possa scrivere su questo buffer circolare. Presumo che potrebbe essere necessario avere un meccanismo di blocco?
Puoi suggerire un approccio eccessivo a questo per favore?