Moniajo

säikeet

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

1

247

    Vastaukset 1

    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. Mikä tästä teki

      Lopulta niin vaikeaa?
      Ikävä
      80
      891
    2. Mitä vikoja

      kaivatussasi on?
      Ikävä
      58
      836
    3. Nainen, minkä tiedon juuri nyt haluaisit

      tietää hänestä, miehestä?
      Ikävä
      63
      836
    4. Uunimakkara koululaisten suosikki

      https://www.is.fi/ruokala/ajankohtaista/art-2000012228523.html on tärkeää että oppilaat syövät hyvin, muuten ei jaksa p
      Maailman menoa
      264
      665
    5. 50
      662
    6. Meistä puhutaan

      Meistä varmaan puhutaan ja huhutaan. Luulen niin. Ei kiva juttu. Ja ystävät on minusta huolissaan. Yritän tehdä kaikkeni
      Ikävä
      27
      656
    7. Noniin myönnetään

      Rakastan aivan kauheasti ❤️
      Ikävä
      17
      512
    8. Luotan sinuun nainen, kuin kallioon!

      Jos joskus tuntuu siltä, että haluat puhua minulle jotain luottamuksella niin voit luottaa siihen, että kaikki jää meid
      Ikävä
      39
      511
    9. En tiedä sinusta

      Olisitko lempeä, hyväntuulinen ja rento vai jämpti, määrätietoinen ja huoliteltu kumppani?
      Ikävä
      38
      502
    10. Ikä ei tule yksin

      Huomaan, että olen rupsahtanut kasvoista aika paljon.
      Ikävä
      58
      488
    Aihe