GNU/Linux >> Znalost Linux >  >> Linux

Jaké jsou nevýhody linuxových front zpráv?

Funkce msgctl() , msgget() , msgrcv() a msgsnd() jsou funkce fronty zpráv 'System V IPC'. Budou vám fungovat, ale jsou poměrně těžké. Jsou standardizovány POSIX.

POSIX také poskytuje modernější sadu funkcí mq_close() , mq_getattr() , mq_notify() , mq_open() , mq_receive() , mq_send() , mq_setattr() a mq_unlink() což by pro vás mohlo být lepší (taková ostuda bohatství).

Budete však muset zkontrolovat, která z nich je ve výchozím nastavení nainstalována na vašich cílových platformách. Zejména ve vestavěném systému se může stát, že je budete muset nakonfigurovat nebo dokonce nainstalovat, protože tam ve výchozím nastavení nejsou (a totéž může platit o sdílené paměti a semaforech).

Primární výhodou obou sad zařízení pro zprávy je to, že jsou předem odladěny (pravděpodobně), a proto mají problémy se souběžností již vyřešeny – zatímco pokud to chcete udělat sami se sdílenou pamětí a semafory, máte spoustu práce, abyste se dostali na stejnou úroveň funkčnosti.

Takže (znovu) použijte, když můžete. Pokud je to možnost, použijte raději jeden ze dvou systémů fronty zpráv než znovu vynalézejte svůj vlastní. Pokud nakonec zjistíte, že existuje problémové místo výkonu nebo něco podobného, ​​můžete prozkoumat psaní vlastních alternativ, ale do té doby — znovu použijte!


Fronty zpráv systému V (ty, které jsou manipulovány systémovými voláními msg*) mají spoustu podivných vtipů a problémů. Pro nový kód bych důrazně doporučil používat doménové sokety UNIX.

Jak již bylo řečeno, důrazně bych také doporučil předávání zpráv IPC přes schémata sdílené paměti. Ve sdílené paměti je mnohem snazší udělat chybu a má tendenci se pokazit mnohem katastrofálněji.


Předávání zpráv je skvělé pro malé datové bloky a tam, kde je třeba zachovat neměnnost, protože fronty zpráv kopírují data.

Oblast sdílené paměti nekopíruje data při odesílání/přijímání a může být efektivnější pro větší soubory dat na úkor méně čistého programovacího modelu.


Linux
  1. Linux – Jak zjistit, jaké pevné disky jsou v systému?

  2. Linux – jaké zdroje entropie používá jádro Linuxu?

  3. Linux – jaké jsou hodnoty vlastnosti přerušení stromu zařízení?

  1. Co dělá Linux udržitelným OS

  2. Jaké jsou rozdíly mezi lsof a netstat na linuxu?

  3. Co je zpráva Máte novou e-mailovou zprávu v systému Linux/UNIX?

  1. Pomocí terminálu Linux můžete zjistit, jaké soubory jsou ve vašem počítači

  2. Čím je linuxová komunita výjimečná?

  3. Linux vs. Unix:Jaký je rozdíl?