Changeset 87 for proiecte


Ignore:
Timestamp:
Jan 10, 2010, 9:17:28 PM (14 years ago)
Author:
(none)
Message:

commit la varianta cu executor

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proiecte/ptvs/src/vnsim/core/Engine.java

    r81 r87  
    1616import java.util.ListIterator;
    1717import java.util.Random;
     18import java.util.concurrent.ExecutorService;
     19import java.util.concurrent.Executors;
    1820
    1921import vnsim.applications.adaptiveTL.IntersectionCarRecord;
     
    8587public class Engine {
    8688       
     89        public static int numThreads;
     90       
    8791        /* EZCab - file informations about the client */
    8892        public static BufferedWriter bwClient, bwCab;
     
    212216                       
    213217                ArrayList<Intersection> intersectii = map.allIntersections;
     218               
     219                numThreads=intersectii.size();
     220               
    214221                for(int q=0;q<intersectii.size();q++){
    215222                        System.out.println("intersectia "+q+": "+" nume: "+intersectii.get(q).toString()+" "+intersectii.get(q).getMapPoint());
     
    480487        long lastTime = -1;
    481488       
     489       
     490        /////////////////////////////////////// thread pool with Executors ////////////////////
     491        /**
     492         * PTVS Project
     493         */
     494        public ExecutorService executor[];
     495       
     496        public void start(Event e, int i) throws IOException {
     497           
     498              executor[i].submit(new EventProcessingThread(e, this));
     499          }
     500       
    482501        ////////////////////////////////////// step ///////////////////////////////////////////////////////////
    483502        /**
     
    487506       
    488507        static int cnt = 0;
     508       
     509        /**
     510         * PTVS
     511         */
     512        int dimens = 0;
     513        int eventTime=0;
    489514       
    490515        public void step() {
     
    650675                Map map = Globals.map;
    651676                ArrayList<Intersection> intersectii = map.allIntersections;
    652                 int numThreads=intersectii.size();
     677                numThreads=intersectii.size();
    653678               
    654679                //v1 - noThreads = noIntersections
    655                 Runnable processingThreads[] = new Runnable[numThreads];
     680                //Runnable processingThreads[] = new Runnable[numThreads];
    656681                //
     682                //System.out.println("numThreads:"+numThreads);
     683               
     684                executor=new ExecutorService[numThreads];
     685               
     686                for(int i=0;i<numThreads;i++){
     687                        executor[i] = Executors.newFixedThreadPool(1); // un singur thread e mereu refolosit pt fiecare intersectie.. ar putea fi mai multe
     688                }
     689                 
    657690               
    658691                while (true) {
     
    665698                        // extrag un eveniment din coada !!!!! acum doar il extrag.. cand intru in playEvent il si scot cu remove(0)
    666699                        Event e = (Event) eventQueue.get(0);
     700                       
     701                        /*if (e.getTime() == crtTime) {
     702                                System.out.println("----||||--------->> e.getTime() == crtTime== "+crtTime);
     703                                eventTime = crtTime;
     704                        }*/
     705                       
    667706                        if (e == null) continue;
    668                         System.out.println("\n----------- number of events in the queue:"+eventQueue.size() );
     707                       
     708                        if(dimens!=eventQueue.size()){
     709                               
     710                                System.out.println("\n----------- number of events in the queue:" +eventQueue.size());
     711                                dimens = eventQueue.size();
     712                        }
     713                       
    669714                       
    670715                        /**
     
    677722               
    678723                        if((e instanceof SendEvent) || (e instanceof ReceiveEvent)){
    679                                 e = (Event)eventQueue.remove(0);
     724                               
     725                                synchronized (eventQueue) {
     726                                        e = (Event)eventQueue.remove(0);
     727                                }
     728                               
    680729                                /**
    681730                                 * PTVS Project
     
    720769                                 */
    721770                               
    722                                 // nu e bine cu apelul lui run pt ca practic nu se porneste un thread nou ci
    723                                 // se apeleaza metoda run ca orice alta metoda dintr-o clasa, executia este secventiala..
    724771                               
    725772                                if (e.getTime() == crtTime) {
     
    728775                                               
    729776                                                        System.out.print("SendEvent: ");
    730                                                         processingThreads[indexClosestIntersection] = new SendEventProcessingThread(e,this);
     777                                                                                                               
     778                                                        //processingThreads[indexClosestIntersection] = new SendEventProcessingThread(e,this);
    731779                                                }
    732780                                        else {                                 
    733781                                                        System.out.print("ReceiveEvent: ");
    734                                                         processingThreads[indexClosestIntersection] = new ReceiveEventProcessingThread(e,this);
     782                                                                                                               
     783                                                        //processingThreads[indexClosestIntersection] = new ReceiveEventProcessingThread(e,this);
    735784                                                }
    736785                                       
    737786                                        System.out.println("Processing thread "+indexClosestIntersection+" from intersection "+intersectii.get(indexClosestIntersection));
    738                                         //processingThreads[indexClosestIntersection].start();// cu start nu merge ... why????
    739                                         new Thread(processingThreads[indexClosestIntersection]).start();
     787                                       
     788                                        try {
     789                                                start(e,indexClosestIntersection);
     790                                               
     791                                        } catch (IOException e1) {
     792                                               
     793                                                e1.printStackTrace();
     794                                        }
     795                                       
     796                                        //new Thread(processingThreads[indexClosestIntersection]).start();
    740797                                        cnt++;
    741798                                }
Note: See TracChangeset for help on using the changeset viewer.