Gleichzeitiger Zugriff auf eine Objekt Array



  • Hallo ihr.. welche konsequenzen und probleme könnten entstehen, wenn ich auf ein Objekt Array CArray mit einem Thread schreiben würde und mit einem anderen gleichzeitig was lesen würde??



  • Hallo Borris,
    solange du nur parallel liest und schreibst sollte es relativ problemlos sein, wobei ich auch keine 100% Garantie übernehmen kann. Wenn du allerdings aus mehreren Threads in das Array schreibst kommt es aber ziemlich sicher zu Überlagerungen und Fehlern.

    Ich habe mal mehrere Threads Berechnungen machen lassen, wobei jeder Thread die Ergebnisse in unterschiedliche Spalten eines Listenelements geschrieben hat. Im Ergebnis kamen die merkwürdigsten Fehler und zusammengesetzte Zahlen bei raus.

    Grüße,
    Michael



  • Schreiben und Lesen ist problematisch, wenn die Schreiboperation unterbrochen wird und somit unvollständig ausgeführt wird und sofort danach gelesen wird.

    Die Klasse CCriticalSection bietet Dir einen Schutzmechanismuss für nebenläufige Operationen auf Datenstrukturen.



  • gibt es da ne möglichkeit, das ein algorithmus der gerade sich mit dem Array beschäftig für paar millisekunden stopp egal in welchem rechen schritt (zeitgesteuert) und dann ein andre funktion schnell was in das array reinschreibt oder so?



  • Wie schon NickHappy sagte, Du musst das ganze schützen. Normalerweise wird lesen und schreiben geschützt wenn man mit mehreren Threads arbeitet. Schaue Dir mal die Klassen CCriticalSection, CEvent, CMutex und CSemaphore an. Sind alle von CSyncObject abgeleitet.


Anmelden zum Antworten