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í
×
    včera 15:33 | IT novinky

    Po 26 letech od protiprávního policejního zásahu, který byl spuštěn na základě podnětu společnosti Microsoft, Obvodní soud pro Prahu 2 rozsudkem potvrdil, že Mironet prokázal významnou část svého nároku na náhradu škody vůči Ministerstvu spravedlnosti ČR. Soudem nyní přiznaná část nároku znamená rekordní odškodné, jaké kdy české soudy přiznaly za nesprávný postup státu. Spor byl rozdělen na několik škod, u pravomocně uzavřených částí

    … více »
    Ladislav Hagara | Komentářů: 12
    včera 15:22 | Nová verze

    Lehké desktopové prostředí LXQt bylo vydáno ve verzi 2.4.0. Jde o převážně opravné vydání s drobnými vylepšeními podpory Waylandu.

    |🇵🇸 | Komentářů: 0
    včera 12:44 | IT novinky

    Počítačová hra Kingdom Come: Deliverance 2 českého studia Warhorse získala cenu BAFTA v kategorii nejlepší příběh. V konkurenci pěti dalších nominovaných děl porazila i úspěšnou francouzskou hru Clair Obscur: Expedition 33, která v letošním ročníku získala cenu za nejlepší hru roku.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | Komunita

    Projekt KDE oslaví v říjnu 30 let. Matthias Ettrich poslal 14. října 1996 do diskusní skupiny comp.os.linux.misc zprávu, která započala historii projektu. Důležité milníky jsou zobrazeny na časové ose KDE.

    Ladislav Hagara | Komentářů: 2
    včera 02:55 | Komunita

    Byly vyhlášeny výsledky letošní volby vedoucí/ho projektu Debian (DPL, Wikipedie). Poprvé povede Debian žena. Novou vedoucí je Sruthi Chandran. Letos byla jedinou kandidátkou. Kandidovala již v letech 2020, 2021, 2024 a 2025. Na konferenci DebConf19 měla přednášku Is Debian (and Free Software) gender diverse enough?

    Ladislav Hagara | Komentářů: 15
    včera 00:55 | Nová verze

    Byla vydána nová verze 10.3 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Přidána byla podpora Orange Pi 4 LTS. Přibyl balíček Prometheus.

    Ladislav Hagara | Komentářů: 0
    19.4. 18:55 | Nová verze

    Implementace VPN softwaru WireGuard (Wikipedie) pro Windows, tj. WireGuard pro Windows a WireGuardNT, dospěly do verze 1.0.

    Ladislav Hagara | Komentářů: 2
    19.4. 16:11 | IT novinky

    V Pekingu dnes proběhl 2. ročník půlmaratonu humanoidních robotů. První 3 místa obsadili roboti Honor Lightning v různých týmech. Nový rekord autonomního robota je 50 minut a 26 sekund. Operátorem řízený robot to zvládl i s pádem za 48 minut a 19 sekund. Řízení roboti měli časovou penalizaci 20 %. Před rokem nejrychlejší robot zvládl půlmaraton za 2 hodiny 40 minut a 42 sekund. Aktuální lidský rekord drží Jacob Kiplimo z Ugandy s časem 57 minut a 20 sekund [𝕏].

    Ladislav Hagara | Komentářů: 5
    17.4. 17:11 | Zajímavý článek

    Stanislav Fort, vedoucí vědecký pracovník z Vlčkovy 'kyberbezpečnostní' firmy AISLE, zkoumal dopady Anthropic Mythos (nový AI model od Anthropicu zaměřený na hledání chyb, který před nedávnem vyplašil celý svět) a předvedl, že schopnosti umělé inteligence nejsou lineárně závislé na velikosti nebo ceně modelu a dokázal, že i některé otevřené modely zvládly v řadě testů odhalit ve zdrojových kódech stejné chyby jako Mythos (například FreeBSD CVE-2026-4747) a to s výrazně nižšími provozními náklady.

    MakeIranBombedAgain❗ | Komentářů: 8
    17.4. 12:44 | IT novinky

    Federální návrh zákona H.R.8250 'Parents Decide Act', 13. dubna předložený demokratem Joshem Gottheimerem a podpořený republikánkou Elise Stefanik coby spolupředkladatelkou (cosponsor), by v případě svého schválení nařizoval všem výrobcům operačních systémů při nastavování zařízení ověřovat věk uživatelů a při používání poskytovat tento věkový údaj aplikacím třetích stran. Hlavní rozdíl oproti kalifornskému zákonu AB 1043 a kolorádskému SB26-051 je ten, že federální návrh by platil rovnou pro celé USA.

    MakeIranBombedAgain❗ | Komentářů: 13
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (8%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 1365 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.