Autor Téma: Vlakno jako funkce  (Přečteno 4638 krát)

Libor.Karko

  • Host
Vlakno jako funkce
« kdy: 10-06-2018, 11:20:43 »
Dobrý den.Můj první pokus v lazaru.
Toto funkční v delphi.
Kód: [Vybrat]
Function OtevriThread(Param: Pointer): Longint;
begin
  beep;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
 thh: THandle;
 thid: Cardinal;
begin
 thh:=BeginThread(nil,0,@OtevriThread,nil,0,thid);
 if (thh<>0) then CloseHandle(thh);
end;

Přes lazarus se mu nelibí CloseHandle"
unit1.pas(42,19) Error: Identifier not found "CloseHandle"

I když se mi to podaří rozjet pod win, půjde to i pod linuxem?

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Vlakno jako funkce
« Odpověď #1 kdy: 10-06-2018, 13:26:37 »
Klikni si na BeginThread pomocí Ctrl+levá myš a uvidíš, co všechno máš pro thready k dispozici v FPC. Mimo jiné i CloseThread, ten pod Windows volá právě CloseHandle.
Embarcadero Technology Partner

Libor.Karko

  • Host
Re:Vlakno jako funkce
« Odpověď #2 kdy: 10-06-2018, 15:35:46 »
Zkoušel jsem a je tam  ;)
Proč mi to pak vyhazuje chybu?

100127

  • Host
Re:Vlakno jako funkce
« Odpověď #3 kdy: 10-06-2018, 16:03:56 »
Zkoušel jsem a je tam  ;)
Proč mi to pak vyhazuje chybu?

Nevim kde je co (ani jakou verzi FPC pouzivas), ale modul threadh.inc aktualne neobsahuje funkci CloseHandle (tady je neoficialni mirror).
« Poslední změna: 10-06-2018, 16:09:01 od 100127 »

Libor.Karko

  • Host
Re:Vlakno jako funkce
« Odpověď #4 kdy: 10-06-2018, 16:21:14 »
I tam je   function CloseThread (threadHandle : TThreadID) : dword;

100130

  • Host
Re:Vlakno jako funkce
« Odpověď #5 kdy: 10-06-2018, 16:23:33 »
I tam je   function CloseThread (threadHandle : TThreadID) : dword;

Ano, jen ve Tvem kodu v prvnim prispevku je CloseHandle, ne CloseThread.

Libor.Karko

  • Host
Re:Vlakno jako funkce
« Odpověď #6 kdy: 10-06-2018, 16:50:20 »
Tak stačilo zaměnít na CloseThread  ;)
Jsem to ale plantala  ;D

Libor.Karko

  • Host
Re:Vlakno jako funkce
« Odpověď #7 kdy: 10-06-2018, 17:00:39 »
Ve win je to ok, ale v linuxu to místo ukončení vlákna ukončí celou aplikací  >:(