Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
dream dream
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1
    • Issues 1
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • nexedi
  • dreamdream
  • Issues
  • #2

Closed
Open
Created Feb 01, 2016 by Ghost User@ghost

How to create a multi-threaded, non-blocking machine?

I'm trying to create a machine that's multi-threaded and can process many (say hundreds or thousands) of entities for their fixed duration without blocking and running single-threaded. If up to 500 entities can be in the machine at any given time, but each one must stay in the machine for say 2 hours. Creating a single queue to feed 100's/1,000's of instances of the same single-threaded machine instance seems like a bad way to approach it.

Example: I'm thinking something along the lines of a continuous oven used for baking bread, etc. or anything that is a conveyor system loop. See this video to reference what I'm suggesting: https://www.youtube.com/watch?v=3UjUWfwWAC4&t=120

If the output speed is 500/hr but it takes 1 hour to traverse the continuous oven, then I don't think it's accurate to say any one item takes 1/500th of the time and use a regular machine with 500/hr. That might accurately model the output rate of the machine, but not the capacity (i.e. number of parts simultaneously held within) of the machine nor does it reflect the total time it takes an entity (loaf of bread) to pass through the system. Every entity takes the entire duration required to traverse the loop, but the machine (oven) can handle multiple items at the same time.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7