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. Olen tumma ja tulinen

      Ja vielä suora - en ollut sinua varten. n to m
      Ikävä
      121
      766
    2. Mitä kysyisit

      Mihin haluaisit vastauksen häneltä eli mitä kysyisit?
      Ikävä
      81
      706
    3. Tunnustuksia

      Haluatko tunnustaa jotain, mitä on sydämelläsi?
      Ikävä
      56
      678
    4. Sä et vaan töllö tajua että rakastuin

      Mikä stana siinä on niin vaikea ymmärtää?! Täh
      Ikävä
      46
      583
    5. Mitä luulet

      Mitä luulet kaivattusi ajattelevan sonusta? Onko jotain mitä haluaisit oikaista hänelle?
      Ikävä
      40
      567
    6. Kerro jokin

      👻 tarina
      Ikävä
      60
      542
    7. Luule ja ajattele minusta

      mitä tykkäät nainen, olet ajat sitten antanut itsestäsi ihan omanlaisen kuvan.. 😅
      Ikävä
      44
      517
    8. Vielä hyvinvointitalosta

      Suurin osa pyhäjärvisistä on sivistynyttä fiksua porukkaa ja on täysin hankkeen kannalla. Nyt vain pieni äänekäs joukko
      Pyhäjärvi
      71
      516
    9. 26
      491
    10. Vaikea luottaa täysin

      Kun et oikeasti kerro mitään. Kaikki niin ympäripyöreää ja epämääräistä.
      Ikävä
      53
      463
    Aihe