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. El Khamenein arkku K-Kaupan autossa?

      Kyllä kauppias hoitaa?
      Maailman menoa
      151
      1413
    2. Mahdoton tilanne

      Täällä monella tuntuu olevan jumissa oleva tilanne. Joillakin kaipuu ja ikävä on kestänyt jo vuosia. Osapuoli/puolet ova
      Ikävä
      97
      949
    3. Välillä tulee haikeus

      Et kaikki päättyi näin. Etten saanut vastauksia. Ei meitä oltu tarkoitettu. Niin se vain on.
      Ikävä
      78
      884
    4. Tunteilla leikkiminen

      Oletko leikkinyt kaivattusi tai jonkun kiinnostuneen tunteilla, pelannut jotain peliä tai pelleillyt asioilla? Miksi?
      Ikävä
      113
      825
    5. Ne katseet, ei niitä

      Voi unohtaa. Se, miten molemmat katsoi
      Ikävä
      41
      712
    6. Miten jotkut kehtaa aikuisiällä kiusata

      Ihmisiä? Eikö se ole aika noloa?
      Ikävä
      108
      632
    7. Mä olin ihan peloissani sun lähellä

      Huomasitko? En uskaltanut edes katsoa sua. Näin sivu silmällä sun vinon hymyn. Oliko hyvä vai paha juttu kun tulit lähel
      Ikävä
      22
      574
    8. On ikävä sinua ihana

      En jaksa syvempiä tuntoja enää kirjoittaa. Kaipaan sinun läsnäoloa ja läheisyyttä nainen. Hyvää yötä.
      Ikävä
      28
      543
    9. Mitä jos näkisimme

      Vyöryisikö samat tunteet uudelleen?
      Ikävä
      45
      534
    10. Rydmanin lista lääkkeistä joista poistetaan Kela-korvaus julkisen potilailla

      Rydmanin lista lääkkeistä joista poistetaan Kela-korvaus julkisen potilailla (yksityisen asiakkaille Kela-korvaus jätetä
      Maailman menoa
      353
      495
    Aihe