Moniajo

säikeet

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

1

235

    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. Turussa Varissuolla bussikuski ajoi lapsen yli lapsi kuoli

      Poliisi " Epäilee " kuskia törkeästä liikenneturvallisuuden vaarantamisesta ja törkeästä kuolemantuottamuksesta.
      Maailman menoa
      376
      2416
    2. IS: Väitöstutkimus - Pyöräilybuumi oli pelkkä kupla!

      Pyöräilybuumista paljastui karu totuus Väitöstutkimuksen mukaan suuri suomalainen pyöräilyrenessanssi olikin vain pelkk
      Maailman menoa
      65
      1870
    3. 154
      1433
    4. Martina Aitolehden Victoria-tytär, 16, tietää riskit - Teki silti yllättävän päätöksen

      Victoria Eerikäinen on Martina Aitolehden ja Esko Eerikäisen tytär. Hän on yksi Nepot-sarjan tähdistä. Sarjan kuvausten
      Suomalaiset julkkikset
      13
      1257
    5. Apostolit kastoivat eri tavalla kuin kirkko

      Raamatussa on kaksi ristiriitaista kastekaavaa. Toinen ei voi olla oikea. Kumpi on alkuperäinen? "Menkää siis ja tehkää
      Kaste
      502
      1211
    6. Vastuunkantoa

      Nyt kun Ähtäri on historiansa pahimmassa kriisissä, päättäjä luikkii perunakellariin: "Eronpyyntö kaupunginvaltuuston pu
      Ähtäri
      48
      945
    7. Olen varattu

      Kihloissa ja menemme naimisiin. Anteeksi💔
      Ikävä
      90
      884
    8. Haluatko enää nähdä mua mies?

      Se on täysin sinusta kiinni.
      Ikävä
      71
      842
    9. Ruohonpolttoa Suomussalmella

      Poikaporukka oli kuullut että ruohonpoltto on muotia, joten Kirkkopuistossa oli tekoruohoa poltettu. Ketkä liene asialla
      Suomussalmi
      43
      825
    10. Alavuden Ähtärin kylä 1.1.2028

      Ketä saamme kiittää tästä?
      Ähtäri
      28
      823
    Aihe