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 03:00 | Nová verze

    V aktuálním přehledu vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie) bylo oznámeno vydání nové verze 0.4.0. Výrazně se zlepšilo vykreslování stránek jako lichess.org, Zulip nebo Speedtest.

    Ladislav Hagara | Komentářů: 0
    včera 19:22 | Bezpečnostní upozornění

    Vládní CERT upozorňuje (𝕏) na kritické zranitelnosti v produktech VMware: CVE-2026-59309, CVE-2026-59310 a CVE-2026-47876. Zranitelnosti v VMware vCenter umožňují vzdálenému útočníkovi se síťovým přístupem obejít autentizaci a získat neoprávněný přístup k vCenter, případně zneužít directory traversal ke spuštění libovolného kódu na vCenter.

    Ladislav Hagara | Komentářů: 1
    včera 18:33 | Bezpečnostní upozornění

    Společnost Coinkite upozorňuje na bezpečnostní chybu svých hardwarových kryptopeněženek Coldcard. Jedná se o kritickou chybu v generování náhodných čísel (RNG). Místo hardwarového generátoru náhodných čísel (TRNG) byl omylem používán softwarový fallback (PRNG).

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

    Představena byla nová linuxová distribuce Shadowfetch Linux. Na rozdíl od mnoha nováčků, které nabízejí převážně jiné téma a výběr softwaru, tato distribuce založená na Debianu Testing s desktopovým prostředím KDE Plasma 6.6, klade lokálně běžící umělou inteligenci do centra svého desktopového zážitku.

    Pinhead | Komentářů: 0
    30.7. 17:22 | Zajímavý projekt

    Max Leiter v roce 2019 zkusil zprovoznit X server na iPadu (iOS). Nyní se k tématu vrátil a s pomocí LLM a balíčkovacích nástrojů Procursus rozběhl desktop s X11 i Waylandem. Jeho balíčky jsou dostupné v repozitáři xiOS.

    |🇵🇸 | Komentářů: 17
    30.7. 13:33 | IT novinky

    Společnost Google Cloud dnes oznámila, že její infrastruktura a služby byly oficiálně zařazeny do Katalogu cloud computingu vedeného Digitální a informační agenturou (DIA). Tato certifikace potvrzuje, že infrastruktura a služby Google Cloud splňují přísné bezpečnostní a regulační požadavky České republiky pro provoz cloudových služeb ve veřejném sektoru.

    Ladislav Hagara | Komentářů: 6
    30.7. 13:11 | IT novinky

    Vůbec poprvé v historii se stát při testování digitálních služeb obrací na širokou veřejnost. Digitální a informační agentura (DIA) a Ministerstvo vnitra zvou občany k zapojení do zátěžového testu eDokladů, které od loňského podzimu prošly optimalizací aplikace a posílením infrastruktury. Test proběhne 13. srpna ve 13:00 a pro jeho úspěch bude potřeba zapojení několika desítek tisíc občanů. Zapojení do testu je zcela dobrovolné a úkol

    … více »
    Ladislav Hagara | Komentářů: 40
    30.7. 13:00 | Nová verze

    FireDragon je webový prohlížeč, doposud založený na Floorpu, jednom z forků Firefoxu s větším důrazem na ochranu soukromí a přizpůsobení uživatelského rozhraní. Spravuje ho člen komunity distribuce Garuda Linux. Nové vydání verze 13 opouští Floorp a přechází přímo na Firefox s patchi z LibreWolfu a vlastními úpravami. Dostupný je také na Flathubu.

    |🇵🇸 | Komentářů: 0
    30.7. 05:44 | Zajímavý software

    picogame (GitHub) je malý 2D herní engine pro mikrokontroléry jako RP2040, čip uvnitř kapesní konzole Picopad. Hru napíšeš v Pythonu a vyzkoušíš ji v prohlížeči nebo desktopovém simulátoru. Až bude hotová, zkopíruješ ji na podporovanou desku. Na začátku nepotřebuješ C, sestavení firmwaru ani hardware.

    Ladislav Hagara | Komentářů: 1
    29.7. 19:22 | Nová verze

    Multiplatformní prohlížeč elektronických knih KOReader byl vydán ve verzi 2026.07 "Sailing Walrus". U PDF souborů s SMask lze vyčistit pozadí. Přibyla podpora Kobo v5 nebo základní podpora OPDS 2.0.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (18%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2291 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    20.6.2009 07:31 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Další překvapivý příklad

    Ještě tu mám dva zdrojáky, ve kterých funkce volaná v odděleném vlákně mění lokální proměnnou jiného vlákna, na které závisí další běh programu.

    Napřed bez synchronizačních primitiv:

    #include <unistd.h>
    #include <stdio.h>
    #include <pthread.h>
    
    static void * setzero( void * param ) {
            *( (int *) param ) = 0;
            return NULL;
    }
    
    int main( void ) {
            int local = 1;
            pthread_t thread;
    
            pthread_create( &thread, NULL, setzero, &local );
            while ( local );
            pthread_join( thread, NULL );
            puts( "The thread has finished." );
            return 0;
    }

    Tohle dopadne zruba takto:

      -O0 -O1+
    GCC skončí zamrzne
    ICC skončí skončí

    Chování GCC je zcela podle předpokladů. Proměnná není není chráněna primitivem a zároveň není volatile, tudíž při zapnutí optimalizace původní záměr samozřejmě selže. Proč ale kód z ICC nezamrzne? Je to absurdní, ale ICC celý while cyklus odstraní!

    Naskýtá se otázka: Že by snad ICC analyzoval vytváření vláken a zjistil, co se může s tou proměnnou stát? Ne, to se neděje. Je snadné to dokázat: Když ve funkci setzero() přiřadíme místo nuly například dvojku, while cyklus bude odstraněn taky. A to je naprosto špatně. Je to bug v kompilátoru, nebo jen v mé hlavě? V assembleru je přesně toto:

            pushl     %eax                                          #14.42
            pushl     $setzero                                      #14.42
            pushl     $0                                            #14.42
            pushl     %edx                                          #14.42
            call      pthread_create                                #14.2
                                    # LOE ebx esi edi
    ..B1.2:                         # Preds ..B1.7
            pushl     $0                                            #16.24
            pushl     32(%esp)                                      #16.24
            call      pthread_join                                  #16.2

    Teď druhý kousek, tentokrát se synchronizačními primitivy.

    #include <unistd.h>
    #include <stdio.h>
    #include <pthread.h>
    
    static pthread_mutex_t mutex;
    static pthread_cond_t cond;
    
    static void * setzero( void * param ) {
            *( (int *) param ) = 0;
            pthread_cond_signal( &cond );
            return NULL;
    }
    
    int main( void ) {
            int local = 1;
            pthread_t thread;
    
            pthread_mutex_init( &mutex, NULL );
            pthread_cond_init( &cond, NULL );
            pthread_create( &thread, NULL, setzero, &local );
    
            pthread_mutex_lock( &mutex );
            while ( local ) pthread_cond_wait( &cond, &mutex );
            pthread_mutex_unlock( &mutex );
    
            pthread_join( thread, NULL );
            puts( "The thread has finished." );
            pthread_cond_destroy( &cond );
            pthread_mutex_destroy( &mutex );
            return 0;
    }
    

    Funkce setzero() vůbec nezamyká mutex, když signalizuje změnu podmínkové proměnné. Nicméně podle manuálové stránky je něco takového povoleno. Vše funguje zcela korektně pro všechny úrovně optimalizace u GCC i ICC. I z pohledu assembleru je vše v pořádku, lokální promměná v cyklu v main() se skutečně vždy načte znovu.

    Tady je fragment assembleru z kompilátoru Intel při -O3, který odpovídá té smyčce v main():

    ..B1.5:                         # Preds ..B1.20 ..B1.19
            movl      4(%esp), %eax                                 #22.10
            testl     %eax, %eax                                    #22.10
            je        ..B1.10       # Prob 10%                      #22.10
                                    # LOE ebx esi edi
    ..B1.7:                         # Preds ..B1.5
            pushl     $mutex.0                                      #22.44
            pushl     $cond.0                                       #22.44
            call      pthread_cond_wait                             #22.18
                                    # LOE ebx esi edi
    ..B1.20:                        # Preds ..B1.7
            addl      $8, %esp                                      #22.18
            jmp       ..B1.5        # Prob 100%                     #22.18
                                    # LOE ebx esi edi
    

    Dokonce ani lokální proměnná tedy nemusí být volatile, když se používá jako podmínková. V případě inlinování pthread_cond_wait() by to dopadlo stejně, protože tato funkce musí za všech okolností obsahovat speciální instrukce a tudíž i blok asm volatile s kouzelným slovem "memory" v seznamu změněných registrů.

    Začínám být čím dál pevněji přesvědčen, že podmínková proměnná nikdy nemusí být volatile a že toto chování překladačů se ani v budoucnu nemůže změnit.

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.