[VB.NET] Problemi con array

martedì 21 aprile 2009 - 18.14

RicFreak Profilo | Newbie

Sto facendo un programma che deve gestire una comunicazione seriale, con parole da 14 bytes.
Per evitare problemi, il programma attiva 2 thread; il primo riceve i dati dalla seriale e li invia ad una coda di byte Q1;
il secondo thread esamina la coda di byte Q1, estrae 14 bytes, controlla che tutto sia a posto e popola una coda di byte(13) Q2;
Il main, infine, chiede i dati alla Q2 e fa i fatti suoi.

Il problema sorge nel momento in cui Q2 accumula più di un elemento, perché i successivi accessi alla coda Q2 non restituiscono i dati corretti.
Per capirsi meglio, supponiamo che Q2 sia in questa situazione:

Item 1: 01 02 03 04 05 06 07 08 09 10 11 12 13 14
Item 2: 15 16 17 18 19 20 21 22 23 24 25 26 27 28

La successiva istruzione Q2.Dequeue non restituirà, come ci aspetterebbe, Item 1 ma Item 2, e la successiva Dequeue restituirà nuovamente item 2, facendo di fatto sparire Item 1.

Ho pensato ad un problema di sincronizzazione di thread, così ho rifatto il tutto utilizzando dei timer senza processi mutithread, e l'errore permane.

Poi ho pensato di sostituire il tipo byte(14) con string e, magia... tutto funziona.

In sostanza la gestione delle code sembra avere problemi nel caso in cui vengano gestiti tipi non atomici.

Qualcuno ha mai avuto a che fare con cose di questo genere?????

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5