Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.
NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.
Předobjednat si lze nový jednodeskový počítač Arduino VENTUNO Q s předinstalovaným Ubuntu. S 16 GB LPDDR5 a 64 GB eMMC. Pro lokální LLM, agentní AI, počítačové vidění, robotiku…
Hexpair není nejlepší HEX editor na světě a ani se o to nesnaží. Zato je k dispozici kdykoliv a kdekoliv – všude tam, kde máte svůj Vim. Vznikl jako hobby projekt před pár měsíci a dospěl do stavu, kdy by mohl být užitečný širší komunitě. Přepnout do HEX režimu se dá i uprostřed rozdělané práce: Soubor, který už máte otevřený běžným vim file.md, jedním příkazem přepnete do HEX editoru a dalším příkazem ho můžete vrátit zpět do textu. Kurzor přitom
CERN dlouhodobě používal vlastní sestavení RHEL, ze kterého přešel na CentOS Stream. Federico Vaga a Nikos Tsipinakis ale nyní v přednášce na MiniDebConf Winterthur 2026 popisují plán probíhajícího přechodu na Debian pro řízení akcelerátorů. Důvodem k opuštění CentOS Stream jsou zachování zpětné kompatibility se starším hardwarem, kterou Red Hat narušuje, když tlačí sestavení balíčků pro novější verze architektury (x86-64), a nedostatečné nástroje pro sestavování vlastních balíčků a repozitářů.
UZDoom (Wikipedie), tj. fork GZDoom, byl vydán ve verzi 5.0.0. Videopředstavení na YouTube. Podrobný přehled novinek v Changelogu.
Příručka Linux From Scratch pro sestavení základního linuxového systému byla aktualizována v pravidelném půlročním termínu. Vydání 13.1 shrnuje přes 40 nových verzí balíčků a několik patchů. Navazující příručka Beyond Linux From Scratch s recepty pro sestavení dalších knihoven a aplikací zatím vydána nebyla, ačkoliv vývojová verze stále dostává aktualizace. Lze je číst online nebo stáhnout v HTML či PDF.
Řešení dotazu:
…sleep(3) may be implemented using SIGALRM; mixing calls to alarm() and sleep(3) is a bad idea.…
Dala by se v hlavní programové smyčce nahradit funkce sleep za jiný mechanismus?Jinak na modernich jadrech by sel take pouzit cekani na timerfd, viz treba http://www.kernel.org/doc/man-pages/online/pages/man2/timerfd_create.2.html
sleep() nebo nanosleep(). Luboš měl ale IMHO na mysli to, že někdy autoři programů místo pasivního čekání na nějakou událost využívají smyčku, která se v pravidelných intervalech ptá, jestli už událost nastala. Při krátkém intervalu se tím zbytečně zatěžují zdroje, při dlouhém se zase prodlužuje reakční doba. Někdy to samozřejmě jinak dělat nejde, ale často se to z neznalosti nebo lenosti používá, i když mechanismy pro pasivní čekání existují.
nanosleep() podle manuálu pro krátké intervaly čekal aktivně
I kdyby ano, tady se bavíme o náhradě za sleep(), takže o takový interval zcela určitě nejde.
Každopádně s prostředky pro sleep() bych si moc starostí nedělal, test jedné podmínky jednou za několik sekund (granularita funkce sleep) je zanedbatelná zátěž.
Tady si asi nerozumíme. Neměl jsem na mysli zátěž funkce sleep() samotné, ale o ty periodické kontroly, tj. konstrukce typu
while (!ready()) {
usleep(100);
}
když na něco čekáte. Pokud ten interval bude příliš krátký, budou opakované kontroly příliš zatěžovat procesor (a možná i něco jiného). Bude-li příliš dlouhý, pak máte příliš dlouhou odezvu. Pokud existují prostředky, jak se nechat probudit až tehdy, když je podmínka splněná (a hned, jakmile je splněná), měla by jim být dána přednost.
Pokud ti přijde nějaký signál, sleep bude přerušen a ty nebudeš vědět jak dlouho ještě čekat.man sleep(3) rika neco jineho:
Zero if the requested time has elapsed, or the number of seconds left to sleep, if the call was interrupted by a signal handler.
int
own_sleep (time_t seconds, time_t useconds)
{
#if LINUX
struct timeval interval;
if (seconds < 0)
seconds = 0;
if (useconds < 0)
useconds = 0;
if (seconds == 0 && useconds == 0)
return -1;
memset(&interval, 0, sizeof(interval));
interval.tv_sec = seconds;
interval.tv_usec = useconds;
return select (FD_SETSIZE, NULL, NULL, NULL, &interval);
#endif
#if !(defined __MINGW32__ || defined _MSC_VER)
struct timeval now, deadline;
gettimeofday (&deadline, NULL);
#if 0
deadline.tv_usec += usec;
deadline.tv_sec += deadline.tv_usec / 1000000;
deadline.tv_usec %= 1000000;
#else
deadline.tv_sec += useconds;
deadline.tv_usec += seconds;
#endif
do
{
gettimeofday (&now, NULL);
}
while ((now.tv_sec < deadline.tv_sec) ||
(now.tv_sec == deadline.tv_sec && now.tv_usec < deadline.tv_usec));
#else
/* MinGW has no gettimeofday(). ftime() seems to be the best alternative as I
* don't know of any standard Windows function with microsecond accuracy. I
* should have a look at the Cygwin source code... - dbjh */
struct timeb tb;
int32_t int now, deadline;
ftime (&tb);
deadline = tb.time * 1000 + tb.millitm + useconds / 1000;
do
{
ftime (&tb);
now = tb.time * 1000 + tb.millitm;
}
while (now < deadline);
#endif
}
zakladni problem je v tom, ze kazde aktivni volani sleep, za pomoci dodatecnych funkci vytvari rezii na CPU a na volani prislusnych prostredku. Nejlepsi je pouziti timeoutu pro uvedeny select().
pthread_mutex_lock(mutex);
clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_nsec += msec * 1000000;
abstime.tv_sec += sec;
if (abstime.tv_nsec > 1000000000UL) {
abstime.tv_nsec %= 1000000000UL;
abstime.tv_sec += 1;
}
rc = pthread_cond_timedwait(cond, mutex, &abstime);
if (rc != ETIMEDOUT) WARN("Predcasny timeout (rc=%d)", rc);
pthread_mutex_unlock(mutex);
Před použitím se musely inicializovat proměnné "mutex" a "cond". Ale zase pomocí funkce pthread_cond_signal() šlo čekání okamžitě zrušit.
Tiskni
Sdílej: