Skip to content

Commit

Permalink
Added FiberPool class. Not finished
Browse files Browse the repository at this point in the history
  • Loading branch information
bakkdoor committed Mar 6, 2011
1 parent f18f2af commit 3ff4018
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/boot.fy
Expand Up @@ -33,6 +33,7 @@ require: "method"
require: "stack"
require: "proxy"
require: "thread_pool"
require: "fiber_pool"
require: "future"

# version holds fancy's version number
Expand Down
47 changes: 47 additions & 0 deletions lib/fiber_pool.fy
@@ -0,0 +1,47 @@
class FiberPool {
def initialize {
@pool = []
@current = nil
}

def size {
@pool size
}

def add: fiber {
@pool << fiber
}

def remove: fiber {
@pool remove: fiber
}

def schedule {
Thread new: {
loop: {
while: {@pool size > 0} do: {
@pool each: |f| {
f resume
}
@pool select!: 'alive?
}
Thread sleep: 1000
}
}
}
}

class Scheduler {
@@pool = FiberPool new
def Scheduler add: fiber {
@@pool add: fiber
}

def Scheduler remove: fiber {
@@pool remove: fiber
}

def Scheduler schedule {
@@pool schedule
}
}

0 comments on commit 3ff4018

Please sign in to comment.