Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie).
V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 12.0 (Mastodon). Forgejo je fork Gitei.
Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 155 (pdf) a Hello World 27 (pdf).
Hyprland, tj. kompozitor pro Wayland zaměřený na dláždění okny a zároveň grafické efekty, byl vydán ve verzi 0.50.0. Podrobný přehled novinek na GitHubu.
Patrick Volkerding oznámil před dvaatřiceti lety vydání Slackware Linuxu 1.00. Slackware Linux byl tenkrát k dispozici na 3,5 palcových disketách. Základní systém byl na 13 disketách. Kdo chtěl grafiku, potřeboval dalších 11 disket. Slackware Linux 1.00 byl postaven na Linuxu .99pl11 Alpha, libc 4.4.1, g++ 2.4.5 a XFree86 1.3.
Ministerstvo pro místní rozvoj (MMR) jako první orgán státní správy v Česku spustilo takzvaný „bug bounty“ program pro odhalování bezpečnostních rizik a zranitelných míst ve svých informačních systémech. Za nalezení kritické zranitelnosti nabízí veřejnosti odměnu 1000 eur, v případě vysoké závažnosti je to 500 eur. Program se inspiruje přístupy běžnými v komerčním sektoru nebo ve veřejné sféře v zahraničí.
Vláda dne 16. července 2025 schválila návrh nového jednotného vizuálního stylu státní správy. Vytvořilo jej na základě veřejné soutěže studio Najbrt. Náklady na přípravu návrhu a metodiky činily tři miliony korun. Modernizovaný dvouocasý lev vychází z malého státního znaku. Vizuální styl doprovází originální písmo Czechia Sans.
Vyhledávač DuckDuckGo je podle webu DownDetector od 2:15 SELČ nedostupný. Opět fungovat začal na několik minut zhruba v 15:15. Další služby nesouvisející přímo s vyhledáváním, jako mapy a AI asistent jsou dostupné. Pro některé dotazy během výpadku stále funguje zobrazování například textu z Wikipedie.
Více než 600 aplikací postavených na PHP frameworku Laravel je zranitelných vůči vzdálenému spuštění libovolného kódu. Útočníci mohou zneužít veřejně uniklé konfigurační klíče APP_KEY (např. z GitHubu). Z více než 260 000 APP_KEY získaných z GitHubu bylo ověřeno, že přes 600 aplikací je zranitelných. Zhruba 63 % úniků pochází z .env souborů, které často obsahují i další citlivé údaje (např. přístupové údaje k databázím nebo cloudovým službám).
Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.
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
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í).
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).
Tady bych s tim nesouhlasil.A zcela správně
PTHREAD_MUTEX_DEFAULT == PTHREAD_MUTEX_RECURSIVE
nebo ten výchozí typ je nějaký speciální?
/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
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
Mělo by to jít snadno poznat tak, že přidáte kontrolu návratové hodnoty.To je mi jasný
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);
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.
Tiskni
Sdílej: