GNU/Linux >> Znalost Linux >  >> Linux

Kdy použít pthread_exit() a kdy pthread_join() v Linuxu?

Jak je vysvětleno v dokumentaci openpub,

pthread_exit() opustí vlákno, které jej volá.

Ve vašem případě, protože hlavní to nazývá hlavní vlákno se ukončí, zatímco vaše vytvořená vlákna budou pokračovat v provádění. To se většinou používá v případech, kdy je hlavní vlákno vyžadováno pouze k vytvoření vláken a ponechání vláken, aby dělaly svou práci

pthread_join pozastaví provádění vlákna, které jej vyvolalo, pokud se cílové vlákno neukončí

To je užitečné v případech, kdy chcete před dalším zpracováním v hlavním vláknu počkat na ukončení vlákna.


Obě metody zajistí, že váš proces neskončí dříve, než skončí všechna vaše vlákna.

Metoda spojení má vaše vlákno main funkce explicitně čeká na všechna vlákna, která mají být "připojena".

pthread_exit metoda ukončí váš main funkce a závit řízeným způsobem. main má tu zvláštnost, že koncovka main jinak by byl ukončen celý váš proces včetně všech ostatních vláken.

Aby to fungovalo, musíte si být jisti, že žádné z vašich vláken nepoužívá lokální proměnné, které jsou v nich deklarovány main funkce. Výhodou této metody je, že vaše main nemusí znát všechna vlákna, která byla spuštěna ve vašem procesu, např. protože jiná vlákna sama vytvořila nová vlákna, která main o ničem neví.


pthread_exit ukončí volající vlákno při pthread_join pozastaví provádění volajícího vlákna, dokud cílová vlákna nedokončí provádění.

Jsou docela dobře podrobně vysvětleny v dokumentaci otevřené skupiny:

  • pthread_exit
  • pthread_join

Linux
  1. Co je příkaz Chown v Linuxu a jak jej používat

  2. Antivirus na Linuxu:Měl bych jej skutečně používat a pokud ano, kdy jej potřebuji?

  3. Jak nainstalovat a používat Flatpak v Linuxu

  1. Jak nainstalovat a používat Traceroute v Linuxu

  2. Linux – proč používáme Su – a nejen Su?

  3. Jaký souborový systém použít, když používáte Windows i Linux?

  1. Jak nainstalovat a používat telnet na Kali Linux

  2. Jak nainstalovat a používat Linux Screen?

  3. Linux Tail Command:Co to je a jak jej používat