Ignore:
Timestamp:
02/07/10 03:24:00 (2 years ago)
Author:
tsee
Message:

got experimental slave driving to work

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Padre/lib/Padre/TaskManager.pm

    r10564 r10566  
    9393}; 
    9494 
    95 # This event is triggered by the worker thread main loop after 
    96 # finishing a task. 
    97 our $TASK_DONE_EVENT : shared = Wx::NewEventType; 
    98  
    99 # This event is triggered by the worker thread main loop before 
    100 # running a task. 
    101 our $TASK_START_EVENT : shared = Wx::NewEventType; 
    102  
    10395# This event is triggered by a worker thread DURING ->run to incrementally 
    10496# communicate to the main thread over the life of a service. 
    105 our $SERVICE_POLL_EVENT : shared = Wx::NewEventType; 
     97our $SERVICE_POLL_EVENT : shared; 
     98BEGIN { $SERVICE_POLL_EVENT = Wx::NewEventType; } 
    10699 
    107100# remember whether the event handlers were initialized... 
     
    129122        @_, 
    130123        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, 
    132126        running_tasks => {}, 
    133127    }, $class; 
     
    141135    _init_events($main); 
    142136 
    143     $self->{task_queue} = Thread::Queue->new; 
     137        # To be removed: Old task queue instantiation => Padre::SlaveDriver 
     138    #$self->{task_queue} = Thread::Queue->new; 
    144139 
    145140    # Set up a regular action for reaping dead workers 
     
    174169        Wx::Event::EVT_COMMAND( 
    175170            $main, -1, 
    176             $TASK_DONE_EVENT, 
     171            $Padre::SlaveDriver::TASK_DONE_EVENT, 
    177172            \&on_task_done_event, 
    178173        ); 
    179174        Wx::Event::EVT_COMMAND( 
    180175            $main, -1, 
    181             $TASK_START_EVENT, 
     176            $Padre::SlaveDriver::TASK_START_EVENT, 
    182177            \&on_task_start_event, 
    183178        ); 
     
    294289    return unless $self->use_threads; 
    295290 
    296     @_ = (); # avoid "Scalars leaked" 
     291 
     292        # To be removed: Old worker thread cration. => Padre::SlaveDriver 
     293#   @_ = (); # avoid "Scalars leaked" 
    297294#   my $worker = threads->create( 
    298295#       { 'exit' => 'thread_only' }, \&worker_loop, 
     
    413410    my @workers = $self->workers; 
    414411    $self->task_queue->insert( 0, ("STOP") x scalar(@workers) ); 
    415     while ( threads->list(threads::running) >= 1 ) { 
     412    while ( threads->list(threads::running) >= 2 ) { 
    416413        $_->join for threads->list(threads::joinable); 
    417414    } 
     
    420417        $thread->join; 
    421418    } 
     419 
     420        # cleanup master thread, too 
     421        Padre::SlaveDriver->new->cleanup(); 
    422422 
    423423    # didn't work the nice way? 
Note: See TracChangeset for help on using the changeset viewer.