Moniajo

säikeet

Miten säikeitä käytetään Pascal:ssa. Mitä asioita pitää ottaa huomioon.

1

222

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Kukame

      // esitellään jossain meidän oma säieluokka
      Type
      TMyThread = class(TThread)
      public
      data: String;
      procedure Execute: Override;
      end;

      procedure TMyThread.Execute;
      var
      idx: Integer;
      begin
      // tämä funktio ajetaan omassa säikeessä. Täältä ei saa päivittää
      // lomakkeen VCL komponentteja suoraan koska saattaa tulla
      // konflikti MainUI säikeen kanssa.
      for idx:=0 to to 10 do begin
      sleep(1000); // esimerkissä nukutaan jonkin aikaa
      end;
      end;

      - - - - -
      // käytetään säiettä vaikka päälomakkeella

      procedure TFrmMain.ThreadTerminated(Sender: TObject);
      var
      data: String;
      begin
      // säie lopettanut elämänsä, luetaan siitä lopputulos tai
      // mitä ohjelma haluaakin tehdä. Tätä kutsutaan MainUI
      // säikeessä joten on turvallista päivittää vaikka
      // formien VCL komponenttien tilatietoja.
      data := (Sender as TMyThread).data;
      end;

      procedure TFrmMain.btnStartThread(Sender: TObject);
      var
      thr1: TMyThread;
      begin
      // luo instanssi mutta älä käynnistä(suspended=true) automaattisesti.
      // instanssin konstruktoria (free) kutsutaan automaattisesti kun
      // säikeen elinkaari päättyy. Ennen destruktoria kutsutaan ThreadTerminated
      // funktiota jossa voidaan tehdä lopputemput.
      thr1 := TMyThread.Create(true);
      thr1.freeOnTerminate := true;
      thr1.onTerminate := ThreadTerminated;
      thr1.Resume; // käynnistää säikeen
      // eli meidän ei tarvitse eikä saa kutsua täällä thr1.Free funktiota koska
      // järjestelmä poistaa sen automaattisesti. Jätetään se pyörimään taustalle.
      end;

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mitä tahtuu Kasperi Viita/Suviviita

      Poliisia ja ambulanssia iso määrä.
      Seinäjoki
      84
      3262
    2. Mikä on kaivattusi

      ammatti?
      Ikävä
      76
      1304
    3. Kalasataman talossa lienee rakennusvirhe

      Ei pitäisi olla mahdollista parvekkeen kautta tulipalon kiivetä katolle saakka kuin korkeintaan ylimmästä kerroksesta.
      Maailman menoa
      181
      1243
    4. Kristillinen Kaste on syntisten kaste, ei itsensä uskoviksi julistaneiden kaste

      Raamatun mukaan vain syntisyyden vuoksi kastetut saavat kasteen hyödyn, syntien anteeksisaamisen ja Pyhän Hengen lahjan
      Kaste
      240
      1040
    5. Kaipaatko nainen

      Semmoista tosi hankalaa ja arkaa miestä? Pitäisitkö hänet aina omanasi jos saisit hänet? Miten huomioisit hänen herkkyyd
      Ikävä
      103
      971
    6. Venäjä teki mahtavan iskun Kiovaan?

      Miksi Ukraina ei kykene tekemään Moskovaan yhtä mahtavia iskuja.
      Maailman menoa
      310
      942
    7. Mökille pariksi viikoksi hänen kanssaan

      Ei teknologialaitteita. Niin ❤️
      Ikävä
      95
      857
    8. Onko kaivattusi ulkonäkö

      tarpeeksi miellyttävä? 🥕
      Ikävä
      43
      849
    9. Milloin ymmärsit

      Milloin tunnistit, että sinulle kirjoitetaan ja kuka kirjoittaa? Tarkka päivämäärä ja kellonaika 😉 Önnönnöö, jos ei os
      Ikävä
      78
      835
    10. Nojatuoli !

      Uutta kehiin, kun edellinen pikavauhtia täyttyi, pitäisikö kiittää näitä asian jouduttaneita? Pilvet leijaa, sadetta en
      80 plus
      124
      825
    Aihe