<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=futex%287%29</id>
	<title>futex(7) - Versionshistorik</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=futex%287%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=futex(7)&amp;action=history"/>
	<updated>2026-05-27T22:00:28Z</updated>
	<subtitle>Versionshistorik för denna sida på wikin</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.linux.se/index.php?title=futex(7)&amp;diff=6249&amp;oldid=prev</id>
		<title>Admin: Skapade sidan med &#039;== NAMN == futex - snabba användarutrymmet-lås  == SAMMANFATTNING ==     #include &lt;linux/futex.h&gt;  == BESKRIVNING == Linuxkärnan tillhandahåller futexar (&quot;Fast user-space mutexes&quot;) som en byggsten för snabba användarutrymmet-lås och semaforer. Futexar är mycket grundläggande och lämpar sig väl för att bygga högre nivåers låsabstraktioner såsom mutexar, tillståndsvariabler, läs-/skrivlås, barriärer och semaforer.  De flesta programmerare använder säl...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=futex(7)&amp;diff=6249&amp;oldid=prev"/>
		<updated>2024-11-25T07:42:14Z</updated>

		<summary type="html">&lt;p&gt;Skapade sidan med &amp;#039;== NAMN == futex - snabba användarutrymmet-lås  == SAMMANFATTNING ==     #include &amp;lt;linux/futex.h&amp;gt;  == BESKRIVNING == Linuxkärnan tillhandahåller futexar (&amp;quot;Fast user-space mutexes&amp;quot;) som en byggsten för snabba användarutrymmet-lås och semaforer. Futexar är mycket grundläggande och lämpar sig väl för att bygga högre nivåers låsabstraktioner såsom mutexar, tillståndsvariabler, läs-/skrivlås, barriärer och semaforer.  De flesta programmerare använder säl...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== NAMN ==&lt;br /&gt;
futex - snabba användarutrymmet-lås&lt;br /&gt;
&lt;br /&gt;
== SAMMANFATTNING ==&lt;br /&gt;
    #include &amp;lt;linux/futex.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BESKRIVNING ==&lt;br /&gt;
Linuxkärnan tillhandahåller futexar (&amp;quot;Fast user-space mutexes&amp;quot;) som en byggsten för snabba användarutrymmet-lås och semaforer. Futexar är mycket grundläggande och lämpar sig väl för att bygga högre nivåers låsabstraktioner såsom mutexar, tillståndsvariabler, läs-/skrivlås, barriärer och semaforer.&lt;br /&gt;
&lt;br /&gt;
De flesta programmerare använder sällan futexar direkt utan förlitar sig istället på systembibliotek som bygger på dem, såsom Native POSIX Thread Library (NPTL) (se [[pthreads(7)]]).&lt;br /&gt;
&lt;br /&gt;
En futex identifieras av en minnesbit som kan delas mellan processer eller trådar. Dessa processer behöver inte ha samma adress för futexen. Futexar har semaforliknande semantik i sin grundform; de fungerar som en räknare som kan ökas och minskas atomärt, och processer kan vänta på att värdet blir positivt.&lt;br /&gt;
&lt;br /&gt;
Futexoperationer sker helt i användarutrymmet för okontenderade fall. Kärnan engageras endast för att medla vid kontenderade fall. Då de flesta designs strävar efter att minimera konkurrens är futexar optimerade för dessa situationer.&lt;br /&gt;
&lt;br /&gt;
I sin enklaste form är en futex ett justerat heltal som endast hanteras av atomära assemblerinstruktioner. Detta heltal är fyra byte långt på alla plattformar. Processer kan dela detta heltal med hjälp av [[mmap(2)]], via delade minnessegment eller genom att dela minnesutrymme, vilket är vanligt i multitrådade applikationer.&lt;br /&gt;
&lt;br /&gt;
=== Semantik ===&lt;br /&gt;
Alla futexoperationer börjar i användarutrymmet men kan behöva kommunicera med kärnan via systemanropet [[futex(2)]].&lt;br /&gt;
&lt;br /&gt;
För att &amp;quot;höja&amp;quot; en futex, använd de rätta assemblerinstruktionerna för att atomärt öka heltalet. Kontrollera därefter om det faktiskt ändrades från 0 till 1; i så fall fanns inga väntande processer och operationen är klar. Detta är det okontenderade fallet, som är snabbt och bör vara vanligt.&lt;br /&gt;
&lt;br /&gt;
I det kontenderade fallet ändrades det atomära heltalet från -1 (eller ett annat negativt tal). Detta indikerar att det finns väntande processer. Användarutrymmet ska nu sätta räknaren till 1 och instruera kärnan att väcka väntande processer med operationen `FUTEX_WAKE`.&lt;br /&gt;
&lt;br /&gt;
För att &amp;quot;sänka&amp;quot; en futex, görs motsatsen. Atomiskt minska räknaren och kontrollera om det ändrades till 0; i så fall är operationen klar och futexen var okontenderad. Annars ska processen sätta räknaren till -1 och begära att kärnan väntar på att en annan process höjer futexen. Detta görs med operationen `FUTEX_WAIT`.&lt;br /&gt;
&lt;br /&gt;
Systemanropet [[futex(2)]] kan också ta emot en timeout som specificerar hur länge kärnan ska vänta. Semantiken blir mer komplex i sådana fall; se [[futex(2)]] för detaljer. Detsamma gäller asynkron väntan.&lt;br /&gt;
&lt;br /&gt;
== VERSIONER ==&lt;br /&gt;
Futexstöd introducerades i Linux 2.5.7 men med annorlunda semantik än de som beskrivs ovan. Nuvarande semantik är tillgängliga från Linux 2.5.40 och framåt.&lt;br /&gt;
&lt;br /&gt;
== NOTERINGAR ==&lt;br /&gt;
Återigen, futexar är inte avsedda som en lättanvänd abstraktion för slutanvändare. Implementatörer förväntas vara kunniga i assembler och ha läst källkoden för det användarutrymmet-bibliotek som refereras nedan.&lt;br /&gt;
&lt;br /&gt;
Denna manual beskriver de vanligaste användningarna av [[futex(2)]], men det finns många fler tillämpningar.&lt;br /&gt;
&lt;br /&gt;
== SE ÄVEN ==&lt;br /&gt;
* [[clone(2)]]&lt;br /&gt;
* [[futex(2)]]&lt;br /&gt;
* [[get_robust_list(2)]]&lt;br /&gt;
* [[set_robust_list(2)]]&lt;br /&gt;
* [[set_tid_address(2)]]&lt;br /&gt;
* [[pthreads(7)]]&lt;br /&gt;
&lt;br /&gt;
För mer information, se &amp;quot;Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux&amp;quot; (föredrag från Ottawa Linux Symposium 2002), samt exempelbibliotek för futex: &lt;br /&gt;
⟨https://mirrors.kernel.org/pub/linux/kernel/people/rusty/⟩.&lt;br /&gt;
&lt;br /&gt;
== COLOPHON ==&lt;br /&gt;
Denna sida är en del av man-sidorna (Linux kärna och C-bibliotekets användarrymmet-gränssnittsdokumentation). Information om projektet finns på &lt;br /&gt;
⟨https://www.kernel.org/doc/man-pages/⟩. Om du har en buggrapport för denna manual, se&lt;br /&gt;
⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.&lt;br /&gt;
&lt;br /&gt;
Sidan hämtades från arkivet man-pages-6.9.1.tar.gz från&lt;br /&gt;
⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ den 2024-06-26.&lt;br /&gt;
&lt;br /&gt;
Linux man-sidor 6.9.1          2024-05-02                       futex(7)&lt;br /&gt;
&lt;br /&gt;
= Sidor som refererar till denna sida =&lt;br /&gt;
&lt;br /&gt;
[[futex(2)]], [[pthreads(7)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Sidslut =&lt;br /&gt;
&lt;br /&gt;
Orginalhemsidan på Engelska :https://man7.org/linux/man-pages/man7/futex.7.html&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på &lt;br /&gt;
https://www.linux.se/kontaka-linux-se/&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;Tack till [https://datorhjalp.se Datorhjälp] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Övrig Informationsmanual]]&lt;br /&gt;
[[Kategori:Linuxmanual]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>