How to resolve the algorithm Synchronous concurrency step by step in the Oforth programming language
How to resolve the algorithm Synchronous concurrency step by step in the Oforth programming language
Table of Contents
Problem Statement
The goal of this task is to create two concurrent activities ("Threads" or "Tasks", not processes.) that share data synchronously. Your language may provide syntax or libraries to perform concurrency. Different languages provide different implementations of concurrency, often with different names. Some languages use the term threads, others use the term tasks, while others use co-processes. This task should not be implemented using fork, spawn, or the Linux/UNIX/Win32 pipe command, as communication should be between threads, not processes. One of the concurrent units will read from a file named "input.txt" and send the contents of that file, one line at a time, to the other concurrent unit, which will print the line it receives to standard output. The printing unit must count the number of lines it prints. After the concurrent unit reading the file sends its last line to the printing unit, the reading unit will request the number of lines printed by the printing unit. The reading unit will then print the number of lines printed by the printing unit. This task requires two-way communication between the concurrent units. All concurrent units must cleanly terminate at the end of the program.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Synchronous concurrency step by step in the Oforth programming language
Source code in the oforth programming language
import: parallel
: printing(chPrint, chCount)
0 while( chPrint receive dup notNull ) [ println 1+ ] drop
chCount send drop ;
: concurrentPrint(aFileName)
| chPrint chCount line |
Channel new ->chPrint
Channel new ->chCount
#[ printing(chPrint, chCount) ] &
aFileName File new forEach: line [ chPrint send(line) drop ]
chPrint close
chCount receive "Number of lines printed : " print println ;
You may also check:How to resolve the algorithm Priority queue step by step in the BASIC programming language
You may also check:How to resolve the algorithm Huffman coding step by step in the zkl programming language
You may also check:How to resolve the algorithm Zhang-Suen thinning algorithm step by step in the AppleScript programming language
You may also check:How to resolve the algorithm Sorting algorithms/Quicksort step by step in the Dart programming language
You may also check:How to resolve the algorithm Terminal control/Display an extended character step by step in the jq programming language