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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
dnes 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

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

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 23
včera 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 17
3.12. 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 26
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (8%)
 (5%)
 (3%)
Celkem 781 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: FreeBSD, pthreads a mutexy

16.11.2010 09:28 chsajarsa | skóre: 16 | blog: V_hlouby_destneho_pralesa | Lovosice(Praha)
FreeBSD, pthreads a mutexy
Přečteno: 419×

Zdravim, mam nasledujici kod kompilovany v FreeBSD 8.0-RELEASE-p4 pomoci g++ -pthread neco.cpp:

#include <cstdlib>
#include <iostream>
#include <pthread.h>



using namespace std;

int main(int argc, char** argv) {
 pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
 do {
     pthread_mutex_lock(&mymutex);
     std::cout << "Hello!!" << std::endl;
 } while (1);
 
 return 0;
}

Pod linuxem vse bezi jak ma (zasekne se na mutexu a zustane deadlock), ale na freebsd se cykluje vypisuje text porad dokola. U multithreadovych programu jede jen jednim threadem. Nevite prosim nekdo co delam spatne ? Diky

~ QED ~

Odpovědi

16.11.2010 10:54 Radim Kolář | skóre: 11
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
1. Ve freebsd je to dobre. Kdyz thread vlastni lock tak pri vicenasobnem zamykani nemusi uz cekat. Tuhle vlastnost melo freebsd odjakziva.

2. Ze vas testovaci program kdyz je spusten vicevlaknove jede jen jednim vlaknem? Vzdyt to je to co se od nej ocekava, prave proto je tam ten mutex aby ty ostatni vlakne nejeli.
16.11.2010 11:03 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
1. Ve freebsd je to dobre. Kdyz thread vlastni lock tak pri vicenasobnem zamykani nemusi uz cekat. Tuhle vlastnost melo freebsd odjakziva.
A určitě to má platit i pro pthread? Protože podle Single Unix Specification by se to mělo zablokovat, protože jde o normální mutex (nikoliv rekurzivní).
I am always ready to learn although I do not always like to be taught. (W. Churchill)
16.11.2010 14:53 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
Tady bych s tim nesouhlasil. Podle me dostupnych informaci je defaultni typ PTHREAD_MUTEX_DEFAULT, ktery podle odkazovaneho materialu:
If the mutex type is PTHREAD_MUTEX_DEFAULT,
attempting to recursively lock the mutex results in undefined behaviour.
Attempting to unlock the mutex if it was not locked by the calling thread results in undefined behaviour.
Attempting to unlock the mutex if it is not locked results in undefined behaviour.
To ze v Linuxu je PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL neni mozno ocekavat vsude (a ve FreeBSD to take neplati).
18.11.2010 11:19 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
Tady bych s tim nesouhlasil.
A zcela správně ;-). Moje chyba: nějak jsem to nedočetl a předpokládal jsem, že NORMAL je výchozí hodnota vždy.

Ze zvědavosti (protože jsem to nedokázal najít): ve FreeBSD platí PTHREAD_MUTEX_DEFAULT == PTHREAD_MUTEX_RECURSIVE nebo ten výchozí typ je nějaký speciální?
I am always ready to learn although I do not always like to be taught. (W. Churchill)
18.11.2010 14:09 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
Tak to presne rict nedokazu, jedine co jsem nasel je kousek ze souboru /usr/include/pthread.h:

/*
 * Mutex types (Single UNIX Specification, Version 2, 1997).
 *
 * Note that a mutex attribute with one of the following types:
 *
 *  PTHREAD_MUTEX_NORMAL
 *  PTHREAD_MUTEX_RECURSIVE
 *
 * will deviate from POSIX specified semantics.
 */
enum pthread_mutextype {
    PTHREAD_MUTEX_ERRORCHECK    = 1,    /* Default POSIX mutex */
    PTHREAD_MUTEX_RECURSIVE     = 2,    /* Recursive mutex */
    PTHREAD_MUTEX_NORMAL        = 3,    /* No error checking */
    PTHREAD_MUTEX_ADAPTIVE_NP   = 4,    /* Adaptive mutex, spins briefly before blocking on lock */
    PTHREAD_MUTEX_TYPE_MAX
};

#define PTHREAD_MUTEX_DEFAULT       PTHREAD_MUTEX_ERRORCHECK
18.11.2010 14:55 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
Tak podle tohohle (protože PTHREAD_MUTEX_INITIALIZER by měl použít PTHREAD_MUTEX_DEFAULT) by výchozí mutex neměl být rekurzivní, ale pouze error checking a tudíž by ten původní kód měl zamknout mutex (při prvním cyklu) a následné volání by mělo vracet EDEADLK. Je to tak nebo je tam ještě nějaký háček? Dík
I am always ready to learn although I do not always like to be taught. (W. Churchill)
18.11.2010 15:11 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
Mělo by to tak být. Mělo by to jít snadno poznat tak, že přidáte kontrolu návratové hodnoty.
18.11.2010 15:36 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
Mělo by to jít snadno poznat tak, že přidáte kontrolu návratové hodnoty.
To je mi jasný ;-), jen nemám kde si to vyzkoušet a tak se ptám.
I am always ready to learn although I do not always like to be taught. (W. Churchill)
16.11.2010 11:23 chsajarsa | skóre: 16 | blog: V_hlouby_destneho_pralesa | Lovosice(Praha)
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy

1. Pokud je to tak jak rikate, tak cim muzu zajistit, aby se muj ukazkovy program choval podle ocekavani(tedy stejne jako na linuxu)? Mam ideu,ze budu mit vytvorena vlakna, ktera budou zastavena pomoci toho mutexu. Ja do nich v pripade potreby narvu data (zmenim data v objektu,ktery ma ta fce vlakna predany jako parametr) a vlaknu pustim odemcenim mutexu a po dokonceni operace se vlakno v cyclu zase vrati k tomu zamcenemu mutexu. Chci tak ridit thread pool pro obsluhu site. Tedy:

Pracovni vlakno:

for(;;){
 pthread_mutex_lock(&mymutex);
 do_work();
 pthread_mutex_lock(&mymutex);
}

 

A odemikani pak v jinem vlakne pomoci:

pthread_mutex_unlock(&mymutex);
~ QED ~
16.11.2010 11:32 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: FreeBSD, pthreads a mutexy
A odemikani pak v jinem vlakne pomoci: pthread_mutex_unlock(&mymutex);
Nesmíte odemykat mutex v jiném vlákně, než které ho zamklo (resp. ono to možná někde bude fungovat, ale ...).

Na to, co popisujete, jsou tu podmínkové proměnné, v pthread funkce pthread_cond_wait & spol.
I am always ready to learn although I do not always like to be taught. (W. Churchill)

Založit nové vláknoNahoru

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

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