Tcl Library Source Code

Check-in [055c6dd568]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Added a fence to prevent recursive calls to cron::wait
Timelines: family | ancestors | descendants | both | odie
Files: files | file ages | folders
SHA1: 055c6dd5689de4037710ed04c69dab7e8cb25bcc
User & Date: tne 2016-07-22 20:38:43
Context
2016-07-23
11:18
Pulling changes from trunk check-in: 81be16ae99 user: hypnotoad tags: odie
11:06
New version 2.0 for the cron package. It now provides a "task" ensemble for manipulating schedules and also tracks time internally in milliseconds. It provides a new coroutine aware "sleep" function to pause a script but keep background tasks firing off. cron also now includes all of the functions needed to track and clean up after coroutines and events that have been created by TclOO objects. Tool has been modified to make use of the new features in cron. Replaced the sleep function in udpcluster with the sleep function in cron. Updated the dependencies for processman check-in: d9b48225d8 user: hypnotoad tags: trunk
2016-07-22
20:38
Added a fence to prevent recursive calls to cron::wait check-in: 055c6dd568 user: tne tags: odie
2016-07-21
21:55
Fix for cron. A task with no coroutine, and no command, and no anything else causes thrashing as an idle task Updated the versions of cron and processman and nettool called by modules within tcllib check-in: cdb4dbfa45 user: tne tags: odie
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to modules/cron/cron.tcl.

481
482
483
484
485
486
487



488
489
490
491
492
493
494
  if {$::cron::busy && $::cron::panic_event eq {}} {
    if {$::cron::trace} {
      puts "CRON BUSY... RESCHEDULING PANIC"
    }
    after cancel $::cron::panic_event
    set ::cron::panic_event [after 120000 {::cron::wake PANIC}]
    return



  }
  after cancel $::cron::next_event
  set ::cron::next_event [after idle [list ::cron::do_one_event $who]]
}
  
proc ::cron::do_one_event {{who ???}} {
  if {$::cron::trace} {







>
>
>







481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
  if {$::cron::busy && $::cron::panic_event eq {}} {
    if {$::cron::trace} {
      puts "CRON BUSY... RESCHEDULING PANIC"
    }
    after cancel $::cron::panic_event
    set ::cron::panic_event [after 120000 {::cron::wake PANIC}]
    return
  }
  if {$::cron::busy} {
    return
  }
  after cancel $::cron::next_event
  set ::cron::next_event [after idle [list ::cron::do_one_event $who]]
}
  
proc ::cron::do_one_event {{who ???}} {
  if {$::cron::trace} {