Moniajo

säikeet

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

1

69

    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. Terveystalo paljasti yksityisen sairaanhoidon empatia puutteet

      Yksityisellä puolella raha ratkaisee, jos ei ole rahaa potilas ei saa empatiaa eikä siten apuakaan: Poliisi teki rikosi
      Maailman menoa
      193
      2128
    2. Puhuuko Orpo niin totta kuin osaa?

      Vai osaisiko "en muuta keksinyt" -Orpo edes vähän paremmin puhua totta? https://www.iltalehti.fi/politiikka/a/f8d5241f-
      Maailman menoa
      287
      1652
    3. Ehdin aamulla

      ajattelemaan sinua. Olit ensimmäisenä mielessäni. Avasin silmäni tähän uneen, jota elämäksi kutsutaan. Kuuntelin lintuje
      Ikävä
      139
      1345
    4. Laita viestiä?

      Sitten kun on sinulle hyvä hetki, minä odotan. Jotain jäi kesken ja haluan viedä sen loppuun 😘
      Ikävä
      82
      1234
    5. Mä todella toivon että

      Sulla on nyt kaikki hyvin sun elämässä, olet sisukas nainen sen näki jo ensimmäisestä hetkestä.
      Ikävä
      36
      1127
    6. Naiselle kysymys

      Oletko rakastunut minuun?
      Ikävä
      89
      1126
    7. Olen ollut pois täältä neljä kuukautta

      Neljä kuukautta sitten olin tosiaan psykoottinen, ja jouduinkin osastolle hoidettavaksi kahdeksi kuukaudeksi. Ystävyys-
      Ikävä
      184
      1042
    8. Salakamera! Kirsikka Simberg julkaisi Farmilla otetut salakuvat: "Paha tapa" paljastuu! Katso kuvat!

      Oho, no nyt on kyllä rikottu sääntöjä… Farmi Suomi -kuvauksista paljastuu yllättävää materiaalia. Lue lisää: https://w
      Tv-sarjat
      4
      969
    9. Katselimme pitkään ja se merkitsi minulle paljon

      Sinulle se ei merkannut näköjään mitään.
      Ikävä
      41
      874
    10. Sun pitää mies unohtaa

      Minut jo. Tiedän että se on sulle tosi hankalaa. Mut sun pitää unohtaa mut jo. Älä kirjoita mulle tänne viestejä enää.
      Ikävä
      65
      862
    Aihe