Moniajo

säikeet

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

1

246

    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ä mietit juuri nyt?

      🤔
      Ikävä
      146
      1336
    2. Aurinkoni...

      On ikävä sua ❤️
      Ikävä
      55
      782
    3. Huonoja uutisia-nyt lähtee höyrylaivat

      https://www.ita-savo.fi/ Konkurssiin meni tämäkin yritys. Raja kiinni ja venäläiset turistit puuttuvat. Täällä menee pe
      Savonlinna
      38
      701
    4. Minkä haluaisit

      Nähdä kaivatultasi
      Ikävä
      80
      617
    5. Ei näytä hyvältä

      Kyllä nyt Ähtäriä viedään vesikelkalla. Neuvotteliat untuvikkoja kaikki. Mikko tietty tapansa mukaan loikki puheenjohtaj
      Ähtäri
      39
      576
    6. Kuinka vanha kaivattusi on?

      Gallup teille kaikille
      Ikävä
      45
      575
    7. Älä itke rakas.

      Tunnen sun kyyneleet silmissäni. Kaikki tulee menemään hyvin. Loppu häämöttää jo...
      Ikävä
      50
      551
    8. Jos vielä toivot...mies...

      Saisinpa jonkun merkin sinulta, jos vielä odotat 📝➡️📱 Rohkeus on mennyt jos seurustelet vaikka nykyisin. En halua häi
      Ikävä
      49
      547
    9. Ihana juhannusperinne

      Lähdemme aina juhannuksena aivan hirveässä kännissä kiikkerällä veneellä pieliselle! Se on hauskaa ja jännittävää puuhaa
      Lieksa
      30
      524
    10. On ikävä sua

      Muru.
      Ikävä
      32
      520
    Aihe