{'fraction_non_alphanumeric': 0.021479713603818614, 'fraction_numerical': 0.0, 'mean_word_length': 4.851162790697674, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Progress in cancellable multi-threaded control software

The AAO's DRAMA data acquisition environment provides a very successful flexible model for instrument control tasks based on the concept of named 'actions'. A task can execute a number of these actions simultaneously, and - something we have found to be of paramount importance in control systems - they can be cancelled cleanly if necessary. However, this flexibility has been achieved by use of what is essentially a collaborative multi-threading system, each action running in short 'stages' in a single-threaded task. The original DRAMA design pre-dated the general availability of multi-threading systems, but until now we have been reluctant to move to a multi-threading model because of the difficulties associated with attempting to cleanly cancel a thread stuck in a blocking operation. We now believe we have an acceptable solution to this problem, and are modifying the internals of DRAMA to produce an approach - compatible with the existing system - that will allow individual actions to execute in separate threads. It will be able to carry out dialogues with hardware in a much simpler manner than has been allowed so far, and this should simplify the coding of DRAMA tasks enormously.