{'fraction_non_alphanumeric': 0.020531400966183576, 'fraction_numerical': 0.0024154589371980675, 'mean_word_length': 5.908333333333333, '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}}
Expressing concurrency in Griffin

Griffin is a statically typed language designed specifically for the rapid prototyping of Ada software. In this paper we describe the Griffin language constructs for expressing concurrency. There are two salient innovations: (1) an extended select statement that provides greater flexibility in managing non-deterministic behavior and (2) the capability of a receiving thread to concurrently rendezvous with multiple sending threads. Thus by increasing concurrency, we alleviate the chief drawback to synchronous communication. We then apply the Griffin constructs in implementing solutions to the readers-writers problem, group lock mechanism, and scheduling groups of concurrent operations. The Griffin constructs facilitate the expression of high-level algorithms that maximize concurrency.