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