From: SourceForge.net <no...@so...> - 2006-06-25 18:38:25
|
Bugs item #1512225, was opened at 2006-06-26 03:38 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1512225&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 80. Thread Package Group: current: 8.4.13 Status: Open Resolution: None Priority: 5 Submitted By: nyademo (nyademo) Assigned to: Zoran Vasiljevic (vasiljevic) Summary: tpool::wait and tpool::cancel set wrong value to variable Initial Comment: tpool::wait and tpool::cancel set wrong value to optional variable. Windows2000 ActiveTcl8.4.13 Thread2.6.3 compiled by VC6 Sample code for tpool::wait ------------------------------------------------------- set tp [tpool::create -maxworkers 1] for {set i 1} {$i < 10} {incr i} { puts [tpool::post -nowait $tp [subst { puts $i:start after 5000 puts $i:end }]] } puts [tpool::wait $tp {4 5 6} waiting]:DONE if {[llength $waiting] != 2} { error "waiting is $waiting" } In this code, only one worker thread is worked. So posted jobs are eval one by one. When the 4 job is finishing, tpool::wait returns from event loop, and returns number 4, and should set a list of waiting jobs (5 and 6) to "waiting" variable. But "waiting" variable is empty list. Sample code for tpool::wait ------------------------------------------------------- set tp [tpool::create -maxworkers 1] for {set i 1} {$i < 10} {incr i} { puts [tpool::post -nowait $tp [subst { puts $i:start after 1000 puts $i:end }]] } after 5000 # jobs 1,2,3 was already done here tpool::cancel $tp {1 2 3} uncanceled if {$uncanceled ne {1 2 3}} { # may be $uncanceled is {1 1 1 2 2 2 3 3 3} error "uncanceled is $uncanceled" } In this code, only one worker thread is worked. So posted jobs are eval one by one. After The 1, 2 and 3 jobs are finished, tpool::cancel is called. So 1,2,3 jobs can't be canceled. tpool::cancel returns empty list and should set a list of uncanceled jobs (1,2 and 3) to "uncanceled" variable. But "uncanceled" variable is {1 1 1 2 2 2 3 3 3} in this case. There isn't a test, so I have no confidence in detail of specifications... But I try to make a pach. see also that. thanks. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1512225&group_id=10894 |
From: SourceForge.net <no...@so...> - 2007-06-30 15:29:49
|
Bugs item #1512225, was opened at 2006-06-25 20:38 Message generated for change (Comment added) made by vasiljevic You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1512225&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 80. Thread Package Group: obsolete: 8.4.13 Status: Open Resolution: None Priority: 5 Private: No Submitted By: nyademo (nyademo) Assigned to: Zoran Vasiljevic (vasiljevic) Summary: tpool::wait and tpool::cancel set wrong value to variable Initial Comment: tpool::wait and tpool::cancel set wrong value to optional variable. Windows2000 ActiveTcl8.4.13 Thread2.6.3 compiled by VC6 Sample code for tpool::wait ------------------------------------------------------- set tp [tpool::create -maxworkers 1] for {set i 1} {$i < 10} {incr i} { puts [tpool::post -nowait $tp [subst { puts $i:start after 5000 puts $i:end }]] } puts [tpool::wait $tp {4 5 6} waiting]:DONE if {[llength $waiting] != 2} { error "waiting is $waiting" } In this code, only one worker thread is worked. So posted jobs are eval one by one. When the 4 job is finishing, tpool::wait returns from event loop, and returns number 4, and should set a list of waiting jobs (5 and 6) to "waiting" variable. But "waiting" variable is empty list. Sample code for tpool::wait ------------------------------------------------------- set tp [tpool::create -maxworkers 1] for {set i 1} {$i < 10} {incr i} { puts [tpool::post -nowait $tp [subst { puts $i:start after 1000 puts $i:end }]] } after 5000 # jobs 1,2,3 was already done here tpool::cancel $tp {1 2 3} uncanceled if {$uncanceled ne {1 2 3}} { # may be $uncanceled is {1 1 1 2 2 2 3 3 3} error "uncanceled is $uncanceled" } In this code, only one worker thread is worked. So posted jobs are eval one by one. After The 1, 2 and 3 jobs are finished, tpool::cancel is called. So 1,2,3 jobs can't be canceled. tpool::cancel returns empty list and should set a list of uncanceled jobs (1,2 and 3) to "uncanceled" variable. But "uncanceled" variable is {1 1 1 2 2 2 3 3 3} in this case. There isn't a test, so I have no confidence in detail of specifications... But I try to make a pach. see also that. thanks. ---------------------------------------------------------------------- >Comment By: Zoran Vasiljevic (vasiljevic) Date: 2007-06-30 17:29 Message: Logged In: YES user_id=95086 Originator: NO Great work! Many thanks for the patch and your time. I have added this into the CVS head. Please checkout and see if all is fine. Your test programs work as expected now. The fixed will appear first in 2.6.6 version. Cheers, Zoran ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1512225&group_id=10894 |
From: SourceForge.net <no...@so...> - 2007-06-30 15:31:14
|
Bugs item #1512225, was opened at 2006-06-25 20:38 Message generated for change (Settings changed) made by vasiljevic You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1512225&group_id=10894 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: 80. Thread Package Group: obsolete: 8.4.13 >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: nyademo (nyademo) Assigned to: Zoran Vasiljevic (vasiljevic) Summary: tpool::wait and tpool::cancel set wrong value to variable Initial Comment: tpool::wait and tpool::cancel set wrong value to optional variable. Windows2000 ActiveTcl8.4.13 Thread2.6.3 compiled by VC6 Sample code for tpool::wait ------------------------------------------------------- set tp [tpool::create -maxworkers 1] for {set i 1} {$i < 10} {incr i} { puts [tpool::post -nowait $tp [subst { puts $i:start after 5000 puts $i:end }]] } puts [tpool::wait $tp {4 5 6} waiting]:DONE if {[llength $waiting] != 2} { error "waiting is $waiting" } In this code, only one worker thread is worked. So posted jobs are eval one by one. When the 4 job is finishing, tpool::wait returns from event loop, and returns number 4, and should set a list of waiting jobs (5 and 6) to "waiting" variable. But "waiting" variable is empty list. Sample code for tpool::wait ------------------------------------------------------- set tp [tpool::create -maxworkers 1] for {set i 1} {$i < 10} {incr i} { puts [tpool::post -nowait $tp [subst { puts $i:start after 1000 puts $i:end }]] } after 5000 # jobs 1,2,3 was already done here tpool::cancel $tp {1 2 3} uncanceled if {$uncanceled ne {1 2 3}} { # may be $uncanceled is {1 1 1 2 2 2 3 3 3} error "uncanceled is $uncanceled" } In this code, only one worker thread is worked. So posted jobs are eval one by one. After The 1, 2 and 3 jobs are finished, tpool::cancel is called. So 1,2,3 jobs can't be canceled. tpool::cancel returns empty list and should set a list of uncanceled jobs (1,2 and 3) to "uncanceled" variable. But "uncanceled" variable is {1 1 1 2 2 2 3 3 3} in this case. There isn't a test, so I have no confidence in detail of specifications... But I try to make a pach. see also that. thanks. ---------------------------------------------------------------------- Comment By: Zoran Vasiljevic (vasiljevic) Date: 2007-06-30 17:29 Message: Logged In: YES user_id=95086 Originator: NO Great work! Many thanks for the patch and your time. I have added this into the CVS head. Please checkout and see if all is fine. Your test programs work as expected now. The fixed will appear first in 2.6.6 version. Cheers, Zoran ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=110894&aid=1512225&group_id=10894 |