[java] Gui voor een lift

Pagina: 1
Acties:
  • 266 views sinds 30-01-2008

  • intrix
  • Registratie: November 2002
  • Laatst online: 04-12-2023
Mijn probleem,

Ik moet een GUI maken van een lift.
"de klassieke opdracht" zoals iemand al zei.

Het probleem is dat ik niet weet hoe een gui met een trhead
samenwerkt. Tot nu toe heb ik alleen met sequentiele programma's
gewerkt in combinatie met de GUI.

Zoiets als bijvoorbeeld een simpel dobbelspelletje;
waarbij je de knop gooi, een score (text) en een objectje (steen) hebt.
of een fietsband die je lek kan prikken met 3 knoppen:
pomp op, prik lek en plak band.

Dus ik zou graag wat meer info willen vinden over threads en de GUI.

Ps. als je voorbeelden wilt toesturen heb ik daar over het algemeen weinig aan,
want ik gebruik BleuJ als programma.

[ Voor 96% gewijzigd door intrix op 28-10-2003 14:32 . Reden: tekst met echte zinnen gemaakt ]

welcome my son, welcome to the machine


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ik zou zeggen: ga eens kijken in de tutorials op www.java.sun.com ...

  • ShadowrunR
  • Registratie: Maart 2002
  • Laatst online: 17-08 20:13
Klassieke Java-opgave. Zoek eens met google op java +elevator. Kom je veel tegen :) Gebruik je op school ook Deitel - Java How To Program mss?

  • intrix
  • Registratie: November 2002
  • Laatst online: 04-12-2023
nee .. dat doen we niet ..

onze docent is volgens mij die-hard programmeur geweest vroegen
(voor KLM onder andere) en verzind dus alle uitleg zelf enzo

wil niet zeggen dat het een wereld docent is .. the opposite .. volgens mij
is tie geflipt maar goed ..

in ieder geval .. Gebruiken we dus de door hem geschreven dictaten
en als programma gebruiken wij .. BlueJ

modbreak:
Kan je ff letten op je posts?
Het zou veel makkelijker lezen als je goede interpunctie gebruikt en hoofdletters zou gebruiken ipv '..' etc...
Gebruik ook volzinnen ipv 'slagzinnen'. Dat leest makkelijker en 't zorgt er ook voor dat mensen moeite gaan doen om je post te lezen

[ Voor 31% gewijzigd door whoami op 28-10-2003 13:55 ]

welcome my son, welcome to the machine


Verwijderd

Je openingspost is nou niet bepaald leesbaar. Ik heb twijffels of je zelf wel snapt waar je mee bezig bent. Volgens mij moet je gewoon dat dictaat nog eens heel erg goed doorlezen, daarna kun je de oplossing vast zelf wel bedenken.

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 15:47
HvU? zo nee, http://www.icim.fnt.hvu.n.../5sysp1/Casus/Casus-2.zip
http://www.icim.fnt.hvu.n...materiaal/Concurrency.zip

(zijn dus geen antwoorden, alleen de opgave + lesstof)

Wordt hier gebruikt en dit jaar ook de liftjes :)

[ Voor 12% gewijzigd door Jelmer op 28-10-2003 14:37 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Gui is 'bijzaak'. Zet eerst je modellen op en laat je gui daarop reageren : Model View Controller. Pas verder extreem goed op met al die threads want afgezien van raceproblemen kun je natuurlijk ook leuke deadlocks krijgen.

  • intrix
  • Registratie: November 2002
  • Laatst online: 04-12-2023
Ok, het programma is dus niet 100% door ons zelf gemaakt.
Die docent heeft nog al de neiging te veel voor te zeggen,
waar ik enorm van baal, maar daar doe je niets aan.
De code tot nu toe is dus goed; ik zet 'm wel even in een reply hier onder
als mensen kritisch gaan lopen doen.

Maar de opdracht is nu dus om wat we nu gemaakt hebben om te zetten naar
een GUI. Opzich moet dat wel lukken, alleen weet ik niet hoe ik
de gui met de 2 verschillende classen moet laten praten.

voorheen heb ik een programma gemaakt met een voor en een
achter band, dat was vrij makkelijk door te zeggen array met 2 banden
en dan button = band[1].priklek() etc.
maar nu zal het toch op een andere manier moeten.

Ook weet ik niet meer of ik nou swing moest nemen of dat andere?

En bedankt voor alle voorbeelden maar die kan ik niet lezen met BLEUJ.
Niet dat ik het erg vindt maak liever iets zelf dan dat ik het copyeer.

De sun tutorials ben ik maar weer aan het door spitten in de hoop daar iets te
vinden dat me van dienst kan zijn.

[ Voor 10% gewijzigd door intrix op 28-10-2003 14:30 . Reden: laat die broncode maar niet vermelden anders post ik weer te veel ]

welcome my son, welcome to the machine


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Weet je trouwens wat raceproblemen en deadlocks zijn?

  • intrix
  • Registratie: November 2002
  • Laatst online: 04-12-2023
deadlocks weet ik ja,
en deadlock is volgens mij als er 2 elementen
wachten op elkaar.

wat een raceprobleem is weet ik niet,
maar wat ik al zei "de docent zei dat het
perfect is zo en dat we nu de GUI moeten maken"

deadlocks zouden niet mogelijk zijn.

speciaal voor jou:
(bij deze hoop ik u voldoende te hebben geinformeerd)

Afbeeldingslocatie: http://www.intrix.nl/extra/overview-1.jpg


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class LiftSysteem {
  public LiftBediening lb;
  public LiftOproep []lo;
  private Besturing proc;
  private LiftMotor lm;
  private LiftKooi lk;
  public  Liftdeur ld;

  public LiftSysteem(int aantverd,int startverd) {
   lk = new LiftKooi(startverd); // beginverdieping
   lm = new LiftMotor(lk);
   ld = new Liftdeur();
   proc = new Besturing(lm,ld,lk,startverd,aantverd);
   lb = new LiftBediening(proc,aantverd);
   lo = new LiftOproep[aantverd]; // verd verdiepingen
   for (int i = 0;i < aantverd; i++)
     {
      lo[i] = new LiftOproep(proc,i);
     }
   }

   public void startSimulatie()
    {
     lk.start();    // start kooi bewegingsthread
     proc.start();  // start de besturingsthread
     ld.start();   // start de thread voor het openen/sluiten deur
    }

   public void stopSimulatie()
    {
     proc.stopThread();       // stop besturing thread
     lk.stopThread();         // stop kooi beweging thread
     ld.stopThread();         // stop liftdeur thread
    }
}


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class LiftKooi extends Thread{

  private  int f;
  private  int verdieping;
  private  int stpos;
  private LiftMotor lm;
  private Besturing best;
  private boolean positiemelden;
  private boolean stop;

  public LiftKooi(int initv ) {
   stop = false;
   f = 0; // stilstaand
   verdieping = initv;   // begin verdieping
   positiemelden = false;
  }

  public void startPositieMelden(Besturing b)
   {
    best = b;
    positiemelden = true;
   }

   public void stopPositieMelden()
    {
     positiemelden = false;
    }

  public void beweeg(LiftMotor lmo,int factor)
   {
     lm = lmo;
     f = factor;
   }

  public void stopThread()
   {
    stop = true;
   } 
  
  public void run()
   {
      while(!stop)  // zolang de thread loopt
      {
       try{
             sleep(1500); // 1.5 sec per verdieping
         }
          catch(InterruptedException ie) {} // do nothing
         verdieping += f; // geen controle op "doorschieten"
         if(positiemelden) {best.nieuwepositie(verdieping);}
      }
   }
}

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class LiftMotor {

  private LiftKooi liftkooi;
  public LiftMotor(LiftKooi lk) {
    liftkooi = lk;
  }

  public void draairechts()
   {
    liftkooi.beweeg(this,1); // telkens +1 verdieping, omhoog
    System.out.println("\t Motor rechtsom draaiend");
   }
   public void draailinks()
   {
    liftkooi.beweeg(this,-1);  // telkens -1 verdieping, omlaag
     System.out.println("\t Motor linksom draaiend");
    }

   public void stop()
    {
     liftkooi.beweeg(this,0);  // 0 verdiepingen er bij of er af.
     System.out.println("\t Motor gestopt");
     }

} 

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
public class Liftdeur extends Thread{
  private int status; // 0 = open,1 = bewegend,2 = dicht
  private boolean lastcommand;   //  openen of sluiten
  private boolean  deurvrij;     //  iemand / niemand tussen de deur
  private boolean stop;
  

  public Liftdeur() {
   stop = false;
   status = 0; // open
   System.out.println("De deur is open");
   lastcommand = true; //openen
   deurvrij = true; // de deur is open, niets er tussen
   }

  public void open()
       {
       lastcommand = true; //openen
       }

  public void sluit()
    {
      lastcommand = false; // sluiten
    }

    public int getStatus()
    {
     return status;
    }

   public void stopThread()
    {
     stop = true;
    } 
   
   public void run()
    {
     try{
      while(!stop)
       {
        if(lastcommand && status == 2) // commando openen bij deur dicht
        {
         status = 1; // bewegend;
         System.out.println("\t\t De deur gaat zich nu openen");
         sleep(1000);
         status = 0; // open
         System.out.println("\t\t De deur is open");
        }
       else if(!lastcommand && status == 0)  // commando sluiten bij deur open
       {

         if (!deurvrij)
            {
            sleep((long)(Math.random() * 5000));  // 0..5 sec variabel
            deurvrij = true;
            System.out.println("\t\t De deur is weer vrij");
            }
           
         status = 1; //bewegend
         System.out.println("\t\t De deur gaat zich nu sluiten");


             int i;
             for(i = 0;i < 10 && deurvrij;i++)
               {
                sleep(100);  // deurvrij sensor om de 100 millisec onderzoeken
                             // lus vroegtijdig verlaten als iemand tussen de deur
                int getal = (int)(Math.random()* 10); // 0..10
                if(getal == 3 && (i % 2 == 0)) deurvrij = false;  // iemand tussen de deur
                //  3 bij tellerstand 0,2,4,6,8  (moment variabel)
               }
             if(i == 10)
               {
                status = 2;  // gesloten, lus niet onderbroken door sensor
                System.out.println("\t\t De deur is gesloten");
               }
             else {
                   lastcommand = true; // open commando ,status blijft bewegend
                   System.out.println("\t\t Er komt iemand tussen de deur");
                   System.out.println("\t\t De deur gaat zich opnieuw openen");
                   sleep(1000);
                   status = 0;  // open
                   System.out.println("\t\t De deur is open");
                   lastcommand = false; // sluit commando
                  }
          }
        }          // end for
      }            // end try
      catch (InterruptedException ie) {}
    }              // end run
}      // end class

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
public class Besturing extends Thread{
  private LiftMotor lm;
  private Liftdeur ld;
  private LiftKooi lk;
  private int liftpositie;
  private int hoogsteverd;
  private boolean [] aanvragen;     // via bedieningspaneel of oproeppanelen
                                    // verdiepingen 0..7 op identieke index
  private boolean stop;             // stop flag voor run methode
  private boolean richting;         // true = omhoog
  private int doelverdieping;       // eerstvolgende verdieping waar moet worden gestopt
  
  
  public Besturing(LiftMotor lmo,Liftdeur d,LiftKooi lko,int startverd, int aantalverd)
  {
   stop = false;                            // stop flag van run methode
   lm = lmo;
   ld = d;
   lk = lko;
   liftpositie = startverd;
   hoogsteverd = aantalverd - 1;
   richting = true;                         // initieel omhoog
   aanvragen = new boolean[aantalverd];
   for(int i = 0;i < aantalverd ;i++)
      aanvragen[i] = false;                 // geen aanvragen
   System.out.println("startpositie = " + startverd);
  }

   public void nieuwepositie(int pos)
   {
     liftpositie = pos;
     System.out.println("positie = " + liftpositie);
    }

  public void nieuweaanvraag(int verdaanvr)
  // aangeroepen door het bedieningspaneel en alle oproeppanelen
    {
      aanvragen[verdaanvr] = true; 
      bepaaldoelverdieping();  
    }

   public void stopThread()
    {
     stop = true;      // stop de while binnen de run methode
    }
    
    
   public void run()
     {
 
     while(!stop){
     
        try{
            sleep(1000);       // 1 sec vooraf aan het deur sluiten
           } catch(InterruptedException ie) {}         // do nothing   

      ld.sluit();
      int ldstat;
       do{
           ldstat = ld.getStatus();
         }while(ldstat != 2);                       // wacht tot deur gesloten

   
      if( doelverdieping > liftpositie )
      {
       lm.draairechts();
      }else lm.draailinks();
           
      lk.startPositieMelden(this);
       while(doelverdieping != liftpositie) { } // wachtlus
        lm.stop();
        lk.stopPositieMelden();
        aanvragen[liftpositie] = false;
        ld.open();                              // open de deur
        bepaaldoelverdieping();
      }
    }

     private void bepaaldoelverdieping()
     {
      do{   
            if( richting == true ) 
            {
              doelverdieping = aanvraaghoger();
            }
            else 
            {
              doelverdieping = aanvraaglager();
            }
            
            if( doelverdieping == -1 ) 
            {
              richting = false;
            }
             
       }while( doelverdieping == -1 );
       
       System.out.println("doel = " + doelverdieping);     
     } // einde bepaaldoelverdieping
     
     private int aanvraaghoger()
      {
       int doel = -1;
       boolean quit = false;
       int I = liftpositie - 1;
        while (I <= hoogsteverd && quit == false) 
        { 
          if (aanvragen[I] == true)
          {
           doel = I;
           quit = true;
          }            
         I = I + 1;     
        }   
       return doel;     
      } // einde aanvraaghoger
      
     private int aanvraaglager()
      {
       int doel = -1;
       boolean quit = false;
       int I = liftpositie - 1;
        while (I >= 0 && quit == false) 
        {
           if (aanvragen[I] == true) 
           { 
            doel = I;
            quit = true;
           }
         I = I - 1; 
        } 
       return doel; 
      } // einde aanvraaglager
     
}// end of class Besturing


Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class LiftOproep {
  private int verdieping;
  private Besturing proc;

  public LiftOproep(Besturing pr,int v) {
   verdieping = v;
   proc = pr;
  }

  public void activeer()
    {
     proc.nieuweaanvraag(verdieping); // 0..7 (7 = aantal -1)
    }

} 

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class LiftBediening {
  private Besturing proc;
  private int a; // aantal verdiepingen (8)

  public LiftBediening(Besturing pr, int aantal) {
   proc = pr;
    a = aantal;
   }

  public void activeer(int verdiepingknop)
    {
     if(verdiepingknop < a && verdiepingknop >= 0)
     proc.nieuweaanvraag(verdiepingknop);  // verd 0..7 (a-1)
    }

} 


Op zowat iedere vraag over deze code kan ik antwoorde:
Omdat dat van mijn docent moest. Omdat deze nogal
obsesief zijn eigen oplossingen terug ziet.

[ Voor 128% gewijzigd door intrix op 28-10-2003 15:03 . Reden: en nu maar hopen dat de mod niet boos is ? ]

welcome my son, welcome to the machine


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Deadlocks krijg je in deze code niet, en dat heeft jouw docent ook goed ingezien.

Jammer dat we niet allemaal zo makkelijk van deadlocks af te komen door het hele concurrency control aspect te negeren. Ik zie namelijk dat je vanuit verschillende threads opdezelde resources kan zitten zonder dat er van concurrency control gebruik is gemaakt.

Het is denk ik goed dat jouw leraar niet meer voor de KLM werkt, anders kregen we nog vaker dit

Afbeeldingslocatie: http://www.thisisbrightonandhove.co.uk/brighton__hove/news_features/shoreham_crash/images/pic1.jpg

  • intrix
  • Registratie: November 2002
  • Laatst online: 04-12-2023
offtopic:
concurrency control is toch helemaal niet nodig in
dit simpele lift apparaat

misschien moet ik er bij vermelden dat het een MBO opdracht
is en er dus ook minder begaafden zijn die de zelfde opdracht
moeten kunnen maken.

Wat heel vervelend is voor iemand die het te makkelijk vindt,
maar ja dan had ik de havo maar netjes af moeten maken.
En niet moeten vluchten voor het 2e fase systeem zoals
deze ADHD patient dus gedaan heeft.

maar beste (gokje: ) TU student (?),
back on topic please

welcome my son, welcome to the machine


  • nero355
  • Registratie: Februari 2002
  • Laatst online: 10-07 17:18

nero355

ph34r my [WCG] Cows :P

offtopic:
Hoi Arno :)


Ik wou even melden dat je vandaag best wel op school had moeten komen die vent ging heel veel over die lift uitleggen ;) En hij zei er ook bij dat als je er even niet uitkomt je best wel op zijn laptoppie mag komen spieken ;)

Ik zag geen e-mail adres in je profiel dus dacht doe het maar zo.......sorry voor verstoren topic :)

|| Stem op mooiere Topic Search linkjes! :) " || Pi-Hole : Geen advertenties meer voor je hele netwerk! >:) ||


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

intrix schreef op 28 October 2003 @ 15:16:
[offtopic]
concurrency control is toch helemaal niet nodig in
dit simpele lift apparaat.
Stel je hebt een printer queue die leeg is. Je hebt het volgende stukje code om die printer queue te vullen (deze wordt aangeroepen vanuit een client bv Word)

code:
1
2
int legePlaats = printer.getLegePlaats();
printer.plaats(legePlaats, document);


Stel dat er nu 2 mensen zijn die op het zelfde moment willen printen, dan kan de volgende toestand optreden. Client 1 die haalt de lege plaats op (toevallig staan er nog geen taken in de queue), dus hij krijgt 0 terug.

Het kan nu gebeuren dat de 2e client nu aan bod komt (multi-tasking printer queue), deze leest ook uit dat plaats 0 nog leeg is.

Nu komt client 1 weer aan bod en hij zegt: ok plaats hem maar op plaats 0.

Daarna komt client 2 weer aan bod en hij zegt: plaats hem maar op plaats 0.

Gevolg: de taak van Client 1 is zomaar verdwenen.

In dit geval komt dat goed uit omdat je natuurlijk papier kan uitsparen, maar in de grote mensen wereld kan dit hele akelige gevolgen hebben.

Dit probleem heet ook wel een race probleem en als het goed is had je het angstzweet al moeten uitbreken toen je het woordje thread al hoorde.

Jouw docent had dit probleem heel eenvoudig kunnen oplossing door 1 thread te maken die alle onderdelen in de lift om de zoveel tijd aanroept. Hierdoor heb je dus maar 1 thread (naast de event dispatching thread) in je systeem: heerlijk. Dit valt te overleven.
misschien moet ik er bij vermelden dat het een MBO opdracht
is en er dus ook minder begaafden zijn die de zelfde opdracht
moeten kunnen maken.
Jouw docent mag niet de indruk wekken dat dit simpel is. Stel dat jij voor een bedrijf werkt en jij maakt zo`n oplossing (die dus fouten gaat opleveren) dan zijn ze alles behalve blij met je. Als je het woord thread hoort, zou je hard gillend door de gangen het gebouw moeten verlaten.
maar beste (gokje: ) TU student (?),
back on topic please
Nee.. ik ben maar een hbo`er die toevallig goed heeft opgelet bij concurrency control (waar ik helaas nog niet angstig genoeg ben gemaakt) en verder verdiep ik me er zo nu en dan weer even in om alles vers te houden.

Dikke aanrader:
Concurrent Programming in Java(TM): Design Principles and Pattern (2nd Edition)

Misschien voor jullie iets te hoog gegrepen, maar zeker een aanrader voor jullie docent.

Verwijderd

De situaties waar je meerdere threads nodig hebt zijn zowiezo niet erg talrijk. Meestal is een single threaded application gewoon het eenvoudigst en dus het stabielst.

  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 20-08 23:38
Verwijderd schreef op 28 October 2003 @ 16:27:
De situaties waar je meerdere threads nodig hebt zijn zowiezo niet erg talrijk. Meestal is een single threaded application gewoon het eenvoudigst en dus het stabielst.
hier stond een niet onderbouwde reactie op een erg onderbouwde post

en dat mag niet :+

[ Voor 38% gewijzigd door yrew op 29-10-2003 11:05 ]

Groetjes


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Verwijderd schreef op 28 oktober 2003 @ 16:27:
De situaties waar je meerdere threads nodig hebt zijn zowiezo niet erg talrijk. Meestal is een single threaded application gewoon het eenvoudigst en dus het stabielst.
Jou zou een Timer kunnen gebruiken van Swing, die op de event dispatching thread dingen loopt te doen (zoals aanroepen van alle domein objecten). Je moet er wel voor oppassen dat je de event dispatching thread niet te zwaar gaat belasten, anders is je gui niet responsive meer.

Op dat moment ga ik zelf wel overschakelen naar thread, maar hierbij moet je wel verdomde goed oppassen. Gelukkig heeft SwingUtilities ook 2 hele fijne methodes: invokeAndWait and invokeLater, waardoor ik veel minder met threads te maken heb.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

yrew schreef op 28 October 2003 @ 16:57:
[...]
Gebruiker denkt dat de zooi vastloopt. Breekt grof mijn app af met een corrupte database als gevolg.
Transacties :P

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

yrew schreef op 28 oktober 2003 @ 16:57:
[...]


yeah right...

Hoe laat ik database verkeer over het netwerk lopen en hou ik de gebruiker op de hoogte van wat er gebeurd? Zonder dat ik mijn database verkeer opstart in een apparte thread, is mijn GUI dood als een pier. Gebruiker denkt dat de zooi vastloopt. Breekt grof mijn app af met een corrupte database als gevolg.
Dan is je database niet ACID compliant. Weggooien ;)

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 18:33
yrew schreef op 28 October 2003 @ 16:57:
Hoe laat ik database verkeer over het netwerk lopen en hou ik de gebruiker op de hoogte van wat er gebeurd? Zonder dat ik mijn database verkeer opstart in een apparte thread, is mijn GUI dood als een pier. Gebruiker denkt dat de zooi vastloopt. Breekt grof mijn app af met een corrupte database als gevolg.
Dan gebruik je non blocking operations voor je netwerk communicatie. :)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

farlane schreef op 28 October 2003 @ 18:50:
[...]

Dan gebruik je non blocking operations voor je netwerk communicatie. :)
Of Foxtrot.

Je hebt zelf namelijk geen zeggenschap over synchroon/asynchroon keuze bij Connection aanroepen ed.

Foxtrot is super voor gui`s. Alleen ben ik nog steeds op zoek naar een semi-modal dialog!

[ Voor 14% gewijzigd door Alarmnummer op 28-10-2003 19:01 ]


Verwijderd

yrew schreef op 28 October 2003 @ 16:57:
[...]


yeah right...

Hoe laat ik database verkeer over het netwerk lopen en hou ik de gebruiker op de hoogte van wat er gebeurd? Zonder dat ik mijn database verkeer opstart in een apparte thread, is mijn GUI dood als een pier. Gebruiker denkt dat de zooi vastloopt. Breekt grof mijn app af met een corrupte database als gevolg.
a) een database die daardoor corrupt kan raken is al een zeer slecht ontwerp.
b) Een GUI die niet responsive zou zijn als je database verkeer over een netwerk laat lopen onderstreept dit slechte ontwerp des te meer!

Het lijkt snel gemakkelijk om naar threads te grijpen maar in de praktijk wordt het hier vaak erg ingewikkeld van of de software wordt niet erg stabiel.

Ik heb al heel wat software gemaakt die in productie gegaan is en ik heb vrijwel nooit threads moeten gebruiken.

  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 20-08 23:38
Verwijderd schreef op 29 October 2003 @ 08:20:
[...]


a) een database die daardoor corrupt kan raken is al een zeer slecht ontwerp.
b) Een GUI die niet responsive zou zijn als je database verkeer over een netwerk laat lopen onderstreept dit slechte ontwerp des te meer!

Het lijkt snel gemakkelijk om naar threads te grijpen maar in de praktijk wordt het hier vaak erg ingewikkeld van of de software wordt niet erg stabiel.

Ik heb al heel wat software gemaakt die in productie gegaan is en ik heb vrijwel nooit threads moeten gebruiken.
hier stond een reactie, maar die mocht niet :+

[ Voor 40% gewijzigd door yrew op 29-10-2003 11:03 ]

Groetjes


  • koli-man
  • Registratie: Januari 2003
  • Laatst online: 29-06 12:23

koli-man

Bartender!!!!

intrix schreef op 28 oktober 2003 @ 14:50:


wat een raceprobleem is weet ik niet,
maar wat ik al zei "de docent zei dat het
perfect is zo en dat we nu de GUI moeten maken"
Volgens mij treedt er een race - condition op als meerdere threads gebruik maken van hetzelfde adres van een variabele. Dit kon volgens mij opgelost worden met het gebruik van een critical section. (zeker weet ik dit niet meer)

Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 18:33
Je hebt zelf deze (terechte) opmerkingen uitgelokt door je ( totaal niet onderbouwde ) opmerkingen over het gebruik van threads om je GUI niet 'zo dood als een pier' te laten lijken.

Jij geeft aan dat je wel threads moet gebruiken, lezers geven aan dat er meerdere oplossingen mogelijk zijn. Moet je niet zo geirriteerd gaan reageren als je wat kritiek krijgt op je opmerkingen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 20-08 23:38
hier stond een reactie, maar die mocht niet :+

[ Voor 94% gewijzigd door yrew op 29-10-2003 11:03 ]

Groetjes


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:38
yrew schreef op 29 October 2003 @ 10:25:
[...]


mijn irritatie grens was op het moment van schrijven nog niet bereikt. Dat gebeurde ongeveer toen jij je ermee ging bemoeien. Ik had niet gehoopt dat hasse en ik onze discussie, die niet eens begon op basis van onderbouwde meningen, zouden vervolgen daar dit niet in de lijn van dit topic ligt. Maar ja toen begon jij je er ineens mee te bemoeien....en waarom eigelijk?

Ik heb niets meer toe te voegen aan dit lift topic. Als jij nog iets van waarde hebt tik er vooral op los maar ga nou niet een topic vervuilen doordat je vind dat je je moet bemoeien met dingen die je helemaal niet aangaan.
Ow, dus men mag hier al niet meer behulpzaam zijn van meneer?

Wil jij misschien vooral eens kalm reageren en de mensen die proberen te helpen met respect te behandelen?
Iedereen heeft recht om z'n mening te geven.

[ Voor 13% gewijzigd door whoami op 29-10-2003 10:33 ]

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

En om aan whoami toe te voegen: ruzieen mag via MSN/mail/ICQ, maar niet in een serieus topic :)

Professionele website nodig?


  • yrew
  • Registratie: Augustus 2001
  • Laatst online: 20-08 23:38
mee eens.
:+
Dit gezegd hebbene zal ik de rest van mijn posts maar weg halen.

Groetjes


Verwijderd

Ja laten we even on-topic blijven. De zij-sprong over threads hoort hier eigenlijk niet thuis. Ben wel benieuwd naar de originele berichten die wegge-edit zijn..... was niet mijn bedoeling om mensen boos te maken. Ik snap ook niet waarom iemand boos zou kunnen worden als ik mijn jarenlange programmeer ervaringen deel.

Misschien kan de topic starter even een update plaatsen hoe het er momenteel mee staat?

  • Cai
  • Registratie: December 2001
  • Laatst online: 11:47

Cai

Intrix, gast. Toch nog overgegaan.....
Is niet netjes hè schoolopdrachten vragen op tweakers hehe...

iig spreek me maar eens aan op msn, ik had een 10 voor die liftopdracht bij Dhr. Koningstein.

Je mag hem wel "inzien",
Daan

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-08 00:10
Cai schreef op 29 oktober 2003 @ 14:37:
Intrix, gast. Toch nog overgegaan.....
Haal dan even z'n email- of MSN-adres uit z'n profile, dan hoef je deze thread niet te vervuilen met een bericht dat voor niemand interessant is.

Verwijderd

Soultaker schreef op 29 oktober 2003 @ 14:44:
[...]
Haal dan even z'n email- of MSN-adres uit z'n profile, dan hoef je deze thread niet te vervuilen met een bericht dat voor niemand interessant is.
nee, dit bericht is voor iedereen intressant...
modbreak:
ga jij eens kappen met onzin te posten?

[ Voor 13% gewijzigd door whoami op 29-10-2003 15:13 ]


  • Cai
  • Registratie: December 2001
  • Laatst online: 11:47

Cai

Soultaker schreef op 29 October 2003 @ 14:44:
[...]

Haal dan even z'n email- of MSN-adres uit z'n profile, dan hoef je deze thread niet te vervuilen met een bericht dat voor niemand interessant is.
[stoute modus]
Ga huilen....
[/stoute modus]

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Okee blijkbaar trekt dit topic flamers aan, dan maar op slot als jullie er niet normaal mee om kunnen gaan :/

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.