Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

MEINE LÖSUNG Kategorie: Programmierung (von Klaus - 8.11.2001 9:34)
Als Antwort auf parallele Prozesse/Aliasing Problem von Klaus - 3.11.2001 23:36

Hallo Leute,
für mich habe ich trotz offener Frage die Lösung.
Die eigentlich emfach, fast offensichtlich.

Situation:
- Einsatz einer IO-Portkarte mit Schieberegister (SR). Das SR ist die Basis, die Daten, die ich da reinschiebe verarbeite ich dann mit 2 weiteren Ports und funktionen.
- folgende Funktionen werden genutzt:
  a) Schieberegister füllen
  b) Port einlesen: nutzt a) und ports.c2
  c) Port schreiben: nutzt auch a) und ports.c2

Problem: b wird nun von verschiedenen Funktionen und threads aufgerufen. Ein gleichzeitiger Aufruf ist also denkbar. Es liegt also nahe, b mit capture und release zu schützen. Das gleiche Argument gilt auch für c, also auch hier capture und release rein.
b und c greifen wiederum beide auf a zu. Um auch hier einen parallelen Zugriff zu vermeiden dachte ich, ebenfalls capture und release reinzuschreiben.
Sollte die Aussage (andere Antworten auf meine Frage hier im Forum) stimmen, dass die Funktion erst neu nach dem release abgearbeitet wird, so müsste es funktionieren.
LEIDER BLEIBT DAS PROGRAMM DANN EINFACH STEHEN; ALS W�RDE IRGENDWO ETWAS NICHT FREIGEGEBEN. Scheint also am Aufruf einer einfach geschützten Funktion einer zweiten geschützten zu liegen. (Verstehen kann ich das noch immer nicht)

MEINE LÃ?SUNG:
Die ist nun ganz einfach. Die implizite Form funktioniert ja wie oben beschrieben nicht, doch es ist wichtig, dass nicht b und c gleichzeitig a aufrufen und je b und auch c nicht mehrfach abgearbeitet werden.
Die EXPLIZITE Form funktioniert auch in Funktionen, so dass ich einfach a ungeschützt gelassen habe und b und c, wie bei threads, mittels globaler Variable/Flag gegeneinander schütze. Funktioniert gut, da a von keiner weiteren Funktion aufgerufen wird.

ALTERNATIVEN / VERSTÃ?NDNIS:
Weshalb es implizit nicht funktioniert, habe ich noch immer nicht verstanden. Ich befürchte, dass ich noch öffter eine solche Situation komme und bin für jeden Tip dankbar. Was mein Verständniss noch erschwehrt, ist, dass doch auch z.B. hwcom functionen implizite geschützt sind. Die müsste man ja dann auch nicht aus einer weiteren geschützten aufrufen können, dass kann doch nicht sein.

Dank an alle!
Klaus




    Antwort schreiben


Antworten:

Re: MEINE LÖSUNG (von KlaRa - 8.11.2001 23:17)
    Re: MEINE LÖSUNG (von Klaus - 14.11.2001 13:53)