subject

Objectives: To practice programming an application with multiple threads of execution and synchronizing their access to necessary shared objects. Description: In this programming assignment you will simulate the package shipping management system for an automated package shipping operation similar to the one depicted here: see image.
This example package shipping operation has five routing stations (S0 S4), each of which has an input and output conveyor connecting to conveyor lines (C0 C4) that go elsewhere in the system. Resources were limited when the system was built so each conveyor going to the rest of the facility must be shared between two routing stations. Since each routing station simultaneously needs an input and output connection to function, access to the shared conveyor lines must be strictly regulated. Flow direction in not important in our simulation.
You have been hired to design a simulator for a new package management system being built with the same design, but possibly fewer/more stations. You are to implement this simulator in Java and have each routing station function in its own thread. A routing station moves packages from one of its connected conveyors to the other. A stations workload is the number of times that a routing station needs to have exclusive access to the input and output conveyors during the simulation. Once a routing station is granted access to both conveyors it calls its doWork()method during which it will flow packages down each of its connected conveyors (of course it must verify that it has access and isnt in conflict with another routing station). After the packages-in and packages- out methods are run, the workload of the routing station is reduced by 1 and the routing station will release both of the conveyors and signal waiting routing stations that the conveyors are available. After executing a flow and releasing its conveyors, a routing station should sleep for some random period of time. A routing stations thread stops running when its workload reaches 0. To prevent deadlock, ensure that each routing station acquires locks on the conveyors it needs in increasing numerical order.
Restrictions:
Do not use a monitor to control the synchronization in your program (i. e., do not use the Java synchronize statement).
Input Specification:
Your program must initially read from a text file (config. txt) to gather configuration information for the simulator. The first line of the text file will be the number of routing stations to use during the simulation. Afterwards, there will be one line for each station. These lines will hold the amount of work each station needs to process (i. e, the number of times it needs to move packages down the conveyor system). Only use integers in your configuration file, decimals will not be needed. You can assume that the maximum number of stations will be 10.
Output Specification:
Your simulator must output the following text to let the user know what the simulator is doing in each of these situations:
1. An input conveyor is set:
Station X: In-Connection set to conveyor n
2. An output conveyor is set:
Station X: Out-Connection set to conveyor n
3. A stations workload is set:
Station X: Workload set. Station X has n package groups to move.
4. A station is granted access to a conveyor:
Station X: granted access to conveyor n
5. A station is releasing access to a conveyor:
Station X: released access to conveyor n
6. A station has completed its workload:
* * Station X: Workload successfully completed. * *
7. A station successfully flows packages down a conveyor:
Station X: successfully moves packages on conveyor n.
8. A station completes a flow:
Station X: has n package groups left to move.

ansver
Answers: 3

Another question on Computers and Technology

question
Computers and Technology, 22.06.2019 00:10
How does access indicates that a filter has been applied to a specific column
Answers: 1
question
Computers and Technology, 22.06.2019 02:20
The reset circuit used on the four 3-bit counters analyzed in this activity reset the counts to zero (000). it makes sense for the up-counters to start at zero (000), but the down-counters should start at seven (111). what would you need to change so that the 3-bit binary down counter with j/k flip-flops you just created would reset to seven (111)?
Answers: 1
question
Computers and Technology, 22.06.2019 07:50
In this lab, you complete a prewritten c++ program for a carpenter who creates personalized house signs. the program is supposed to compute the price of any sign a customer orders, based on the following facts: the charge for all signs is a minimum of $35.00. the first five letters or numbers are included in the minimum charge; there is a $4 charge for each additional character. if the sign is made of oak, add $20.00. no charge is added for pine. black or white characters are included in the minimum charge; there is an additional $15 charge for gold-leaf lettering. instructions ensure the file named housesign.cppis open in the code editor. you need to declare variables for the following, and initialize them where specified: a variable for the cost of the sign initialized to 0.00 (charge). a variable for the number of characters initialized to 8 (numchars). a variable for the color of the characters initialized to "gold" (color). a variable for the wood type initialized to "oak" (woodtype). write the rest of the program using assignment statements and ifstatements as appropriate. the output statements are written for you. execute the program by clicking the run button. your output should be: the charge for this sign is $82. this is the code, // housesign.cpp - this program calculates prices for custom made signs. #include #include using namespace std; int main() { // this is the work done in the housekeeping() function // declare and initialize variables here // charge for this sign // color of characters in sign // number of characters in sign // type of wood // this is the work done in the detailloop() function // write assignment and if statements here // this is the work done in the endofjob() function // output charge for this sign cout < < "the charge for this sign is $" < < charge < < endl; return(0); }
Answers: 1
question
Computers and Technology, 23.06.2019 16:30
If i wanted to include a built-in calendar in a document, what option could i select? draw table insert table insert chart quick tables
Answers: 1
You know the right answer?
Objectives: To practice programming an application with multiple threads of execution and synchroniz...
Questions
question
Mathematics, 07.10.2020 02:01
question
Chemistry, 07.10.2020 02:01
question
History, 07.10.2020 02:01
question
Social Studies, 07.10.2020 02:01
Questions on the website: 13722359