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
      30
      1239
    2. Onko kaivattusi älykäs

      vai onko helposti vedätettävissä
      Ikävä
      68
      866
    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
      803
    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
      148
      657
    5. 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
      279
      625
    6. Luonnollisuus

      Ja luonnonkauneus on kaunista.
      Ikävä
      91
      619
    7. Mikä on hänen nimen viimeinen tavu?

      🎣🎣🎣🎣🎣
      Ikävä
      45
      602
    8. Olet lihonut kuin pullataikina

      Olet lihonut kuin pullataikina. Et ole yhtä kaunis kuin aikaisemmin. Oletko ryyppäämässä käynnyt joka ilta?
      Ikävä
      36
      551
    9. Toivotko jotain tapahtuvan

      Että saisit kaivattusi vaimoksesi?
      Ikävä
      52
      536
    10. Et siis halua

      enää nähdä minua? Lupaan sitten pysyä pois. Ja jos vahingossa satutaan samaan paikkaan voit uskoa että en sitä tahallani
      Ikävä
      47
      520
    Aihe