Project 4 Seaport
プロジェクト予算$30 - $250 USD
Extend project 3 to include making jobs wait until people with the resources required by the job are available at the port.
Reading Job specifications from a data file and adding the required resources to each Job instance.
Resource pools - [url removed, login to view] <Person> list of persons with particular skills at each port, treated as resource pools, along with supporting assignment to ships and jobs.
Job threads - using the resource pools and supporting the concept of blocking until required resources are available before proceeding.
The Job threads should be efficient:
If the ship is at a dock and all the people with required skills are available, the job should start.
Otherwise, the Job should not hold any resources if it cannot progress.
Use synchronization to avoid race conditions.
Each Job thread should hold any required synchronization locks for a very short period.
When a job is over, all the resources used by the job (the people) should be released back to the port.
When all the jobs of a ship are done, the ship should depart the dock and if there are any ships in the port que, one of then should should be assigned to the free dock, and that ships jobs can now try to progress.
NOTE: If a job can never progress because the port doesn't have enough skills among all the persons at the port, the program should report this and cancel the job.
Resources in pools - how many people with skill are currently available
Thread progress, resources acquired, and resources requests still outstanding
- The New York Times
- Wall Street Journal
- Times Online