Tag: memory-barriers
Ein memory-Barriere ist eine spezielle Prozessor-Anweisung, die Einschränkungen hinsichtlich der Reihenfolge, in der Speicherzugriffe werden sichtbar für andere Prozessoren/Kerne in einer multi-Prozessor-oder multi-core-system.
2
Antworten
Nach dem Lesen mehr blogs/Artikel etc, ich bin jetzt wirklich verwirrt über das Verhalten von load/store-vor - /nach-memory-Barriere. Folgenden 2 Zitate von Doug Lea in einem seiner Klarstellung Artikel über JMM, die sind beide sehr unkompliziert: Alles,
5
Antworten
Den Linux-kernel verwendet lock; addl $0,0(%%esp) als schreib-Barriere, während die RE2-Bibliothek verwendet xchgl (%0),%0 als schreib-Barriere. Was ist der Unterschied und was ist besser? Tut x86 erfordern auch Lesen barrier-Anweisungen? RE2 definiert die lese-Barriere-Funktion als no-op auf
3
Antworten
Oft im internet-ich finde, dass LFENCE keinen Sinn macht, in den Prozessoren x86, sprich es tut sich nix , also statt MFENCE wir können absolut schmerzfrei zu verwenden SFENCE, weil MFENCE = SFENCE + LFENCE = SFENCE
1
Antworten
Gibt es einen Artikel unter: http://lwn.net/Articles/378262/, beschreibt die Linux-Kernel Ringpuffer-implementation. Ich habe einige Fragen: Hier ist der "Produzent": spin_lock(&producer_lock); unsigned long head = buffer->head; unsigned long tail = ACCESS_ONCE(buffer->tail); if (CIRC_SPACE(head, tail, buffer->size) >= 1) { /*
8
Antworten
Es ist einfach einzurichten Speicher-Barrieren auf der kernel-Seite: die Makros mb, wmb, rmb, usw. sind immer an Ort und Stelle Dank der Linux-kernel-Header. Wie dies auf der Benutzer-Seite? InformationsquelleAutor | 2009-07-26
5
Antworten
Schreibe ich eine Multithread-Anwendung in c++, in denen die Leistung entscheidend ist. Ich brauche eine Menge von sperren beim kopieren von kleinen Strukturen in den einzelnen threads, dafür habe ich die gewählt haben, verwenden Sie spinlocks. Ich
6
Antworten
In "C# 4 in a Nutshell", der Autor zeigt, dass diese Klasse schreiben können, die 0 manchmal ohne MemoryBarrier kann ich zwar nicht reproduzieren, bei meinem Core2Duo: public class Foo { int _answer; bool _complete; public void
2
Antworten
Einige Sprachen bieten eine volatile - modifier, der beschrieben wird, wie die Durchführung einer "read memory barrier" vor der Lesung, der Speicher, der Rücken eine variable. Einen read memory barrier Häufig beschrieben als ein Weg, um sicherzustellen,
3
Antworten
Oft im internet-ich finde, dass LFENCE keinen Sinn macht, in den Prozessoren x86, sprich es tut sich nix , also statt MFENCE wir können absolut schmerzfrei zu verwenden SFENCEweil MFENCE = SFENCE + LFENCE = SFENCE +
3
Antworten
Soweit ich das verstanden habe, ist mfence ist eine hardware-memory-Barriere, während asm volatile ("" : : : "memory") ist eine compiler-Barriere. Aber,kann asm volatile ("" : : : "memory") statt mfence. Dem Grund hab ich verwechselt ist