Howto getChar sicher abbrechen?

8

Ich möchte optional eine getChar Aktion abbrechen. Ich brauche folgende Funktion:

%Vor%

Bei abort <- getChar' callback wird ein Zeichen von der Standardeingabe gelesen, es sei denn, abort wird aufgerufen, bevor ein Zeichen verfügbar ist. Wenn ein Zeichen gelesen wird, wird callback damit aufgerufen.

Ich habe die folgende Prototypimplementierung:

%Vor%

Das Problem ist, dass killThread den Thread abbrechen kann, nachdem er das Zeichen gelesen hat, aber bevor () in MVar eingefügt wurde.

Ich habe keine Ahnung, wie ich dieses Problem lösen soll, ist das überhaupt möglich mit dem Basispaket? Wenn nicht, haben Sie eine ähnliche Funktion in anderen Paketen implementiert?

    
Péter Diviánszky 27.05.2013, 08:54
quelle

2 Antworten

1

Ich denke, der einfachste Weg, dies zu erreichen, ist die Durchführung einer eigenen Pufferung. Hier ist ein einfacher Prototyp. Es wird davon ausgegangen, dass Sie launchIOThread genau einmal in Ihrem Programm aufrufen. Es behandelt nicht EOF oder andere IO-Ausnahmen, aber das sollte einfach sein.

%Vor%     
Roman Cheplyaka 27.05.2013, 14:58
quelle
0

Sie möchten Ausnahmebehandlungskonstrukte verwenden, so dass der MVar unabhängig von Ausnahmen immer in einem sicheren Zustand verbleibt. Insbesondere möchten Sie wahrscheinlich withMVar .

    
MathematicalOrchid 27.05.2013 10:55
quelle

Tags und Links