Cloudflare, tj. společnost poskytující "cloudové služby, které zajišťují bezpečnost, výkon a spolehlivost internetových aplikací", má výpadek.
Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou
… více »Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).
Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.
U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již šestý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.
Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.
Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).
Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Byl vydán Debian 13.2, tj. druhá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
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ě
. 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í?
/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ý
, jen nemám kde si to vyzkoušet a tak se ptám.
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: