Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > 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 > >