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. Poliisin potkija

      Kukahan oman elämänsä sankari oli potkaissut poliisia? Iltalehdessä oli juttua.
      Haapavesi
      38
      1535
    2. Onko kaivattusi älykäs

      vai onko helposti vedätettävissä
      Ikävä
      83
      1015
    3. Miten yksi ihminen

      Voi kolahtaa näin kovaa? Saada ajatukset vallattua näin totaalisesti? Taidan oikeasti tarvita ammattiapua tämän kanssa,
      Ikävä
      42
      913
    4. P*skimmat palstalaiset kautta aikojen äänestys

      Nyt kaikki peliin, ilman parasta, ei ole p*skinta! Muistetaan mainita myös ne piileskelevät pirulaiset! 🤓
      Sinkut
      210
      893
    5. Mikä on hänen nimen viimeinen tavu?

      🎣🎣🎣🎣🎣
      Ikävä
      57
      850
    6. Työttömiä suomalaisia ei saa töihin

      Ei hakemuksen hakemusta suomalaisilta ammattilaisilta, Piti sitten filippiiniläisiä palkata. https://www.is.fi/talouss
      Maailman menoa
      319
      816
    7. Olet lihonut kuin pullataikina

      Olet lihonut kuin pullataikina. Et ole yhtä kaunis kuin aikaisemmin. Oletko ryyppäämässä käynnyt joka ilta?
      Ikävä
      42
      749
    8. Luonnollisuus

      Ja luonnonkauneus on kaunista.
      Ikävä
      94
      682
    9. Kyllä on ihmisillä paha olla

      Harmi, kun se pitää kipata toisten niskaan. Noh, huhuhan kertoo, että koko palsta on menossa kiinni. Pitäneekö paikkan
      Sinkut
      136
      638
    10. Toivotko jotain tapahtuvan

      Että saisit kaivattusi vaimoksesi?
      Ikävä
      52
      566
    Aihe