abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:55 | Nová verze

    Bylo oznámeno vydání nové verze 8.1 "Hoare" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Doprovodný příspěvek na blogu Khronosu rozebírá kódování a dekódování videa pomocí Vulkan Compute Shaders v FFmpeg.

    Ladislav Hagara | Komentářů: 1
    dnes 04:33 | Zajímavý projekt

    Byl představen open-source a open-hardware prototyp nízkonákladového raketometu kategorie MANPADS, který byl sestaven z běžně dostupné elektroniky a komponent vytištěných na 3D tiskárně. Raketa využívá skládací stabilizační křidélka a canardovou stabilizaci aktivně řízenou palubním letovým počítačem ESP32, vybaveným inerciální měřicí jednotkou MPU6050 (gyroskop a akcelerometr). Přenosné odpalovací zařízení obsahuje GPS,

    … více »
    NUKE GAZA! 🎆 | Komentářů: 2
    včera 14:22 | IT novinky

    Vědci z univerzity La Sapienza v Římě vyvinuli systém, který dokáže identifikovat jednotlivce pouze na základě toho, jak narušují signály Wi-Fi. Autoři tuto novou technologii nazvali WhoFi. Na rozdíl od tradičních biometrických systémů, jako jsou skenery otisků prstů a rozpoznávání obličeje, nevyžaduje tato metoda přímý fyzický kontakt ani vizuální vstupy. WhoFi může také sledovat jednotlivce na větší ploše než kamera s pevnou polohou; stačí, je-li k dispozici Wi-Fi síť.

    Ladislav Hagara | Komentářů: 10
    včera 04:22 | Nová verze

    SuperTux (Wikipedie), tj. klasická 2D plošinovka inspirovaná sérií Super Mario, byl vydán v nové verzi 0.7.0. Videoukázka na YouTube. Hrát lze i ve webovém prohlížeči.

    Ladislav Hagara | Komentářů: 7
    včera 03:11 | Zajímavý projekt

    Ageless Linux je linuxová distribuce vytvořená jako politický protest proti kalifornskému zákonu o věkovém ověřování uživatelů na úrovni OS (AB 1043). Kromě běžného instalačního obrazu je k dispozici i konverzní skript, který kompatibilní systém označí za Ageless Linux a levné jednodeskové počítače v ceně 12$ s předinstalovaným Ageless Linuxem, které se chystají autoři projektu dávat dětem. Ageless Linux je registrován jako operační

    … více »
    NUKE GAZA! 🎆 | Komentářů: 9
    15.3. 15:33 | Humor

    PimpMyGRC upravuje vzhled toolkitu GNU Radio a přidává alternativní barevná témata. Primárním cílem autora bylo pouze vytvořit tmavé prostředí vhodné pro noční práci, nicméně k dispozici je nakonec celá škála barevných schémat včetně možností různých animací a vizuálních efektů (plameny, matrix, bubliny...), které nepochybně posunou uživatelský zážitek na zcela jinou úroveň. Témata jsou skripty v jazyce Python, které nahrazují

    … více »
    NUKE GAZA! 🎆 | Komentářů: 3
    15.3. 14:33 | Nová verze Ladislav Hagara | Komentářů: 1
    15.3. 12:33 | Zajímavý projekt

    FRANK OS je open-source operační systém pro mikrokontrolér RP2350 (s FRANK M2 board) postavený na FreeRTOS, který přetváří tento levný čip na plně funkční počítač s desktopovým uživatelským rozhraním ve stylu Windows 95 se správcem oken, terminálem, prohlížečem souborů a knihovnou aplikací, ovládaný PS/2 myší a klávesnicí, s DVI video výstupem. Otázkou zůstává, zda by 520 KB SRAM stačilo každému 😅.

    NUKE GAZA! 🎆 | Komentářů: 5
    14.3. 22:55 | IT novinky

    Administrativa amerického prezidenta Donalda Trumpa by měla dostat zhruba deset miliard dolarů (asi 214 miliard Kč) za zprostředkování dohody o převzetí kontroly nad aktivitami sociální sítě TikTok ve Spojených státech.

    Ladislav Hagara | Komentářů: 2
    14.3. 21:33 | Nová verze

    Projekt Debian aktualizoval obrazy stabilní větve „Trixie“ (13.4). Shrnuje opravy za poslední dva měsíce, 111 aktualizovaných balíčků a 67 bezpečnostních hlášení. Opravy se týkají mj. chyb v glibc nebo webovém serveru Apache.

    |🇵🇸 | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (16%)
     (7%)
     (0%)
     (11%)
     (29%)
     (2%)
     (5%)
     (1%)
     (13%)
     (24%)
    Celkem 1096 hlasů
     Komentářů: 26, poslední 12.3. 08:56
    Rozcestník

    Mutex

    21.3.2007 16:25 | Přečteno: 2372× | to su Veci | poslední úprava: 21.3.2007 16:27

    Pracujem na jednom projekte, v ktorom sa spúšťa jeden malý program veľký počet krát (rádovo stovky) a pri každom spustení potrebuje vygenerovať unikátne meno výstupného súboru a odovzdať ho inému procesu. Utilitka môže bežať na viacerých klientoch naraz a výstupný súbor bude vznikať na serveri v čase, keď už utilitka nebeží.

    Čo s tým? Jednoduché. Meno sa generuje podľa aktuálneho času s presnosťou na milisekundu, prihodí sa meno klienta, celé sa to zabalí do mutexu a v mutexe sa počká dlhšie ako 1ms. Akurát, že to nefunguje. Teda väčšinou to funguje. Na mojom stroji je to OK. Na testovacom stroji 700 km ďaleko tiež. Ale na nejakom stroji kdesi v XY v necelom percente pripadov to vygeneruje opakujuci sa identifikator.

    Záhada.

    Tu je kód:

    
    void UniqueName(char *buffer)
    {
      struct timeval tv;
      sem_t *mutex=NULL;
      char hostname[100];
    
      if (!gethostname(hostname,sizeof(hostname)))
      {
        mutex=sem_open("MyMutex",O_CREAT,0700,1);
        if (mutex!=SEM_FAILED)
        {
          sem_wait(mutex);
          gettimeofday(&tv,NULL);
          sprintf(buffer,"%s-%d-%d\n",hostname,tv.tv_sec,tv.tv_usec);
          usleep(5000);
          sem_post(mutex);
          sem_close(mutex);
        }
        else
            perror("sem_open");
       }
    }

    Pôvodný kód je na Win32, takže som sa povŕtal v tom, ako sa to robi na Linuxe. Treba mať jadro 2.6, glibc s NPTL, bežiaci udev a permission na /dev/shm. V originále sú ošetrené všetky systémové volania a žiadne nezlyhá.

    No a pointa? Mám teóriu, prečo ten kód zlyháva. A je taká bláznivá, že som chcel počuť najprv nápady od vás. Tak čo si myslíte?        

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    21.3.2007 17:05 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Mutex
    prestal som citat asi v bode, kde som sa dozvedel ako sa generuje to "unikatne meno". chyba je tam.

    man 3 tmpfile
    21.3.2007 17:08 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: Mutex
    Tak si nečítal pozorne. Ten súbor nevzniká v čase, keď sa to meno generuje. Môže vzniknúť o minútu, alebo aj o pol hodinu. Na inom stroji, z iného programu.
    21.3.2007 17:16 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Mutex
    to ze som prestal citat som nenazval pozornym citanim
    Luk avatar 21.3.2007 17:58 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Mutex
    V každém případě je odvozování unikátních názvů souborů od času hrubou chybou. Je nezanedbatelná pravděpodobnost, že se může stejný název vygenerovat víckrát.

    Pro rozumně unikátní názvy lze použít například funkci uuid_generate().
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    22.3.2007 07:05 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: Mutex
    Ako tak čítam tú stránku, tak sa použije aj current time v spojení s /dev/urandom. Je to v princípe riešenie, ktoré mi bolo navrhované ešte než som poznal príčinu zlyhania môjho kódu, ale nebolo mi sympatické pretože chovanie nie je "deterministické" (a generovaný string je dlhý). Ale nakoniec ho asi budem musieť použiť. Dík za tip.
    22.3.2007 13:30 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Mutex
    Mne se to take nelibi. Jedinecnost neni garantovana, spoleha se ciste na pravdepodobnost (zvlaste dobra je argumentace v manualu :)
    Luk avatar 22.3.2007 18:41 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Mutex
    Problém je v tom, že není žádná obecně použitelná cesta, jak tu skutečnou jedinečnost zajistit. Komu by to nestačilo takhle, může si přidat čítač, jehož hodnota bude použita jako součást identifikátoru.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    21.3.2007 17:30 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Mutex
    V kódu chybu nevidím (to nic neznamená), ale divím se, že pracuješ s časem. Čas je hračka pro pro fyziky, filosofy a jiná individua. Asi bych to řešil přes sdílenou paměť, do které bych zapisoval hodnotu čítače (a při každém požadavku na vygenerování čítač inkrementoval, na samém počátku by se mohl iniciovat třebas tím časem, pokud bys to neměl vyřešeno jinak).
    21.3.2007 17:59 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Mutex
    Utilitka môže bežať na viacerých klientoch naraz a výstupný súbor bude vznikať na serveri v čase, keď už utilitka nebeží.
    Aha, to jsem prve pochopil špatně. Teď už to nechápu vůbec. Jméno generuješ na klientech?
    22.3.2007 06:59 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: Mutex
    > Asi bych to řešil přes sdílenou paměť, do které bych zapisoval hodnotu čítače

    To by som tú pamäť musel zdieľať medzi viacerými strojmi v sieti.

    > > Utilitka môže bežať na viacerých klientoch naraz a výstupný súbor bude vznikať na serveri v čase, keď už utilitka nebeží.

    > Aha, to jsem prve pochopil špatně. Teď už to nechápu vůbec. Jméno generuješ na klientech?

    Áno meno sa generuje na klientoch. Nechcem zachádzať do podrobností, ale skrátka ide o systém, do ktorého sa pumpujú úlohy, ktoré treba spočítať. Skupina úloh sa nachystá na klientovi a potom sa spustí dávka, ktorá ich postupne poodosiela na spracovanie na serveri. Súbor vznikne, až keď sa úloha dostane na rad a začne sa skutočne počítať.

    Vlastne nejde len o výstupný súbor. Podobný mechanizmus je použitý aj na iných miestach, ale princíp ostáva.
    22.3.2007 13:51 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Mutex
    To by som tú pamäť musel zdieľať medzi viacerými strojmi v sieti.
    To přece ne, stačí, když ty klienty očísluješ. Čísla jim buď může přiřazovat server nebo jde-li o uzavřený systém, tak je můžeš očíslovat předem.
    21.3.2007 17:31 ...............23 | skóre: 15 | blog: Various Stuff blog
    Rozbalit Rozbalit vše Re: Mutex
    Ale na nejakom stroji kdesi v XY v necelom percente pripadov to vygeneruje opakujuci sa identifikator.
    A nebeží na tom stroji náhodou nejaký démon na synchronizáciu času alebo niečo také?
    21.3.2007 17:33 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: Mutex
    To nebyl dobrý nápad.
    21.3.2007 18:28 jekub | skóre: 9 | blog: noblog
    Rozbalit Rozbalit vše Re: Mutex
    A nepředbíhají se na stroji v XY hodiny a neběží tam v cronu nějaká časová synchronizace?
    22.3.2007 06:44 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: Mutex
    Zásah. Presne v tom spočíva moja teória. Získavaš 10 bodov ;-)
    21.3.2007 19:48 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Mutex

    Stavite na predpokladech, ze

    • Kazdy stroj ma jedinecny hostname
    • Cas na na kazdem stroji bezi jednim smerem (tj. mezi gettimeofday() nikde nehne zpet s casem)
    • usleep() se muze ovlivnovat s jinymi funkcemi, napr. s alarm()em

    A obecne spat v kriticke sekci je opravdu zavrzenihodne.

    22.3.2007 06:51 rastos | skóre: 63 | blog: rastos
    Rozbalit Rozbalit vše Re: Mutex
    > Kazdy stroj ma jedinecny hostname

    To je, podľa mňa, celkom pravdivý predpoklad. Keby neplatil, tak by to spôsobovalo kadejaké iné problémy, ktoré by sa prejavili skôr. Môžem mať v NT doméne dva stroje s rovnakým hostname?

    > Cas na na kazdem stroji bezi jednim smerem

    Tento predpoklad je skutočne mylný, pretože ten stroj, kde problém vzniká si synchronizuje čas (čo je defaultne vypnuté) a mňa to jednoducho nenapadlo.

    > usleep() se muze ovlivnovat s jinymi funkcemi, napr. s alarm()em

    To je pravda, ale o tom, že dôjde k alarm()-u, by som sa dozvedel z toho, že sa urobí jeho obsluha.
    22.3.2007 08:28 miso | skóre: 36 | blog: iSCSI_initiator_howto | Praha
    Rozbalit Rozbalit vše Re: Mutex
    > Kazdy stroj ma jedinecny hostname To je, podľa mňa, celkom pravdivý predpoklad. Keby neplatil, tak by to spôsobovalo kadejaké iné problémy, ktoré by sa prejavili skôr. Môžem mať v NT doméne dva stroje s rovnakým hostname?
    Stroj moze mat iny hostname a iny zaznam v dns (inac sa vidi on sam a inac ho vidia ostatne stroje).
    A to nehovorim o /etc/hosts (localhost, viac vlastnych IP), zalezi akou funkciou ziskavas vlastny hostname
    Project Satan infects Calculon with Werecar virus
    22.3.2007 13:23 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Mutex
    Cas na na kazdem stroji bezi jednim smerem

    Tento predpoklad je skutočne mylný, pretože ten stroj, kde problém vzniká si synchronizuje čas (čo je defaultne vypnuté) a mňa to jednoducho nenapadlo.

    Rozumne implementace synchronizatoru casu meni cas postupnym spomalovanim nebo zrychlovanim a to na urovni jadra, takze by se cas nemel vracet zpet. (Tj. spoustet kazdou hodinu ntpdate je spatne, ale nechat bezet ntpd je dobre.)

    usleep() se muze ovlivnovat s jinymi funkcemi, napr. s alarm()em

    To je pravda, ale o tom, že dôjde k alarm()-u, by som sa dozvedel z toho, že sa urobí jeho obsluha.

    Nejde jen o alarm(), tech nebezpecnych funkci je mnohem vice. Ale predpokladam, ze vite, co delate.

    22.3.2007 15:00 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mutex
    Rozumne implementace synchronizatoru casu meni cas postupnym spomalovanim nebo zrychlovanim a to na urovni jadra, takze by se cas nemel vracet zpet. (Tj. spoustet kazdou hodinu ntpdate je spatne, ale nechat bezet ntpd je dobre.)
    Což platí jen v případě, že je čas posunutý jen málo. Pokud se čas od přesného času liší třeba o několik dní, není možné jej synchronizovat tak, že několik týdnů poběží hodiny rychleji/pomaleji.
    wake avatar 22.3.2007 16:49 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Mutex
    ano. proto se ntpdate spousti pri bootu, aby se hodiny syncly 'nahrubo', vzapeti se spusti ntpd, ktery se postara o "spojite" udrzovani presneho casu a driftfajlu. (jak moc se mi ty hodiny v HW vlastne predbihaji?)
    Tento příspěvek má hlavičku i patičku!
    22.3.2007 17:23 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mutex
    jak moc se mi ty hodiny v HW vlastne predbihaji?
    Některé dost :-( Problém je, že ntpdate při bootu nemusí čas sesynchronizovat vždy správně (např. během bootu není dostupný internet, třeba i jen z toho důvodu, že po výpadku proudu nabootuje router později, než ntpdate na jiném PC). A navíc ntpd nemá moc rádo výpadky internetu – dokáže v takovém případě přestat synchronizovat čas, ale démon běží dál, takže na první pohled nic nepoznáte. Jednou mi tahle kombinace způsobila to, že na serveru, který s ejinak normálně synchronizoval, běžel démon ntpd, ale čas byl posunut o několik měsíců…
    22.3.2007 18:16 petr_p | skóre: 59 | blog: pb
    Rozbalit Rozbalit vše Re: Mutex
    Coz je problem konkretni implementace (mozna i specifikace).

    Kdyz budu pozadovat relativne presny cas, tak si proste pockam. (Napr. autorita vydavajici casova razitka si rozhodne netroufne zacit pracovat, aniz by mela overeno, ze ma spravny cas.)
    wake avatar 23.3.2007 08:04 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Mutex
    co treba blocking ntpdate? while ! (ntpdate ser.ver); do true; done
    Tento příspěvek má hlavičku i patičku!
    wake avatar 22.3.2007 08:24 wake | skóre: 30 | blog: wake | Praha
    Rozbalit Rozbalit vše Re: Mutex
    dd if=/dev/urandom bs=256 count=1 2>/dev/null | md5sum --binary| cut -d ' ' -f 1
    Tento příspěvek má hlavičku i patičku!

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.