lib/pf2.rb in pf2-0.1.0 vs lib/pf2.rb in pf2-0.2.0
- old
+ new
@@ -2,15 +2,33 @@
require_relative 'pf2/version'
module Pf2
class Error < StandardError; end
- @@threads = []
+ def self.default_scheduler_class
+ # SignalScheduler is Linux-only. Use TimerThreadScheduler on other platforms.
+ if defined?(SignalScheduler)
+ SignalScheduler
+ else
+ TimerThreadScheduler
+ end
+ end
- def self.threads
- @@threads
+ def self.default_scheduler
+ @@default_scheduler ||= default_scheduler_class.new
end
- def self.threads=(th)
- @@threads = th
+ def self.start(...)
+ default_scheduler.start(...)
+ end
+
+ def self.stop(...)
+ default_scheduler.stop(...)
+ end
+
+ def self.profile(&block)
+ raise ArgumentError, "block required" unless block_given?
+ start([Thread.current], true)
+ yield
+ stop
end
end