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. Lääkäri Ari Miettinen kuollut 50-vuotiaana

      Sillähän on Youtubessa paljon videoita.
      Maailman menoa
      102
      3630
    2. Törkeä petosepäily Suomussalmella

      Uutisoi maikkari. Uhrin nimiin on nostettu pankkilainaa, hänet on saatu sijoittamaan hevosiin ja ostamaan autoja. Ei ta
      Suomussalmi
      34
      1412
    3. 83
      1252
    4. Romanttisinta

      Mitä hän on tehnyt sinulle?
      Ikävä
      73
      1069
    5. Mikä on mielestäsi keskustelupalstan tarkoitus?

      Tuolla toisessa ketjussa kävi ilmi jotain minkä itse koen hieman hassuksi. Nykypäivänä yllättävän moni ilmeisesti kokee,
      Sinkut
      333
      1009
    6. Vieläkö se tarjous

      On voimassa?
      Ikävä
      65
      876
    7. Nyt aletaan terveydenhuollossa karsimaan "turhista" operaatioista

      Eräitä toimia ei enää tehdä, vaan yritetään korvata halvemmilla. Nykyään esimerkiksi polven tähystysleikkaukset lähes l
      Maailman menoa
      141
      863
    8. Tämmöistähän tämä meillä ollut

      Sanatonta rakkautta.
      Ikävä
      64
      786
    9. Kysymys miehille ...

      Kertokaapas miehet, että miksi monille miehille on niin hirveän tärkeää määritellä mitä mies saa tehdä ja mitä ei ja mil
      Sinkut
      289
      777
    10. Ttp:llä kuontalot ojennukseen

      Ttp n yrittäjä ilmoitti facessa, että ttp: n tiloihin tulee lokakuun eka vkl parturi. Se tulee parturoimaan vähävaraiste
      Haapavesi
      74
      734
    Aihe