Changeset 10566 for trunk/Padre/lib/Padre/TaskManager.pm
- Timestamp:
- 02/07/10 03:24:00 (2 years ago)
- File:
-
- 1 edited
-
trunk/Padre/lib/Padre/TaskManager.pm (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Padre/lib/Padre/TaskManager.pm
r10564 r10566 93 93 }; 94 94 95 # This event is triggered by the worker thread main loop after96 # finishing a task.97 our $TASK_DONE_EVENT : shared = Wx::NewEventType;98 99 # This event is triggered by the worker thread main loop before100 # running a task.101 our $TASK_START_EVENT : shared = Wx::NewEventType;102 103 95 # This event is triggered by a worker thread DURING ->run to incrementally 104 96 # communicate to the main thread over the life of a service. 105 our $SERVICE_POLL_EVENT : shared = Wx::NewEventType; 97 our $SERVICE_POLL_EVENT : shared; 98 BEGIN { $SERVICE_POLL_EVENT = Wx::NewEventType; } 106 99 107 100 # remember whether the event handlers were initialized... … … 129 122 @_, 130 123 workers => [], 131 task_queue => undef, 124 # grab a copy of the task_queue that's now handled by the slave driver 125 task_queue => Padre::SlaveDriver->new()->task_queue, 132 126 running_tasks => {}, 133 127 }, $class; … … 141 135 _init_events($main); 142 136 143 $self->{task_queue} = Thread::Queue->new; 137 # To be removed: Old task queue instantiation => Padre::SlaveDriver 138 #$self->{task_queue} = Thread::Queue->new; 144 139 145 140 # Set up a regular action for reaping dead workers … … 174 169 Wx::Event::EVT_COMMAND( 175 170 $main, -1, 176 $ TASK_DONE_EVENT,171 $Padre::SlaveDriver::TASK_DONE_EVENT, 177 172 \&on_task_done_event, 178 173 ); 179 174 Wx::Event::EVT_COMMAND( 180 175 $main, -1, 181 $ TASK_START_EVENT,176 $Padre::SlaveDriver::TASK_START_EVENT, 182 177 \&on_task_start_event, 183 178 ); … … 294 289 return unless $self->use_threads; 295 290 296 @_ = (); # avoid "Scalars leaked" 291 292 # To be removed: Old worker thread cration. => Padre::SlaveDriver 293 # @_ = (); # avoid "Scalars leaked" 297 294 # my $worker = threads->create( 298 295 # { 'exit' => 'thread_only' }, \&worker_loop, … … 413 410 my @workers = $self->workers; 414 411 $self->task_queue->insert( 0, ("STOP") x scalar(@workers) ); 415 while ( threads->list(threads::running) >= 1) {412 while ( threads->list(threads::running) >= 2 ) { 416 413 $_->join for threads->list(threads::joinable); 417 414 } … … 420 417 $thread->join; 421 418 } 419 420 # cleanup master thread, too 421 Padre::SlaveDriver->new->cleanup(); 422 422 423 423 # didn't work the nice way?
Note: See TracChangeset
for help on using the changeset viewer.
