Matches in DBpedia 2014 for { <http://dbpedia.org/resource/Hazard_pointer> ?p ?o. }
Showing items 1 to 26 of
26
with 100 items per page.
- Hazard_pointer abstract "In a multithreaded computing environment, hazard pointers are one approach to solving the problems posed by dynamic memory management of the nodes in a lock-free data structure. These problems generally arise only in environments that don't have automatic garbage collection.Any lock-free data structure that uses the compare-and-swap primitive must deal with the ABA problem. For example, in a lock-free stack represented as an intrusively linked list, one thread may be attempting to pop an item from the front of the stack (A → B → C). It remembers the second-from-top value "B", and then performs compare_and_swap(target=&head, newvalue=B, expected=A). Unfortunately, in the middle of this operation, another thread may have done two pops and then pushed A back on top, resulting in the stack (A → C). The compare-and-swap succeeds in swapping `head` with `B`, and the result is that the stack now contains garbage (a pointer to the freed element "B").Furthermore, any lock-free algorithm containing code of the form Node* currentNode = this->head; // assume the load from "this->head" is atomic Node* nextNode = currentNode->next; // assume this load is also atomicsuffers from another major problem, in the absence of automatic garbage collection. In between those two lines, it is possible that another thread may pop the node pointed to by this->head and deallocate it, meaning that the memory access through currentNode on the second line reads deallocated memory (which may in fact already be in use by some other thread for a completely different purpose).Hazard pointers can be used to address both of these problems. In a hazard-pointer system, each thread keeps a list of hazard pointers indicating which nodes the thread is currently accessing. (In many systems this "list" may be provably limited to only one or two elements.) Nodes on the hazard pointer list must not be modified or deallocated by any other thread. Each reader thread owns a single-writer/multi-reader shared pointer called "hazard pointer." When a reader thread assigns the address of a map to its hazard pointer, it is basically announcing to other threads (writers), "I am reading this map. You can replace it if you want, but don't change its contents and certainly keep your deleteing hands off it."When a thread wishes to remove a node, it places it on a list of nodes "to be freed later", but does not actually deallocate the node's memory until no other thread's hazard list contains the pointer. This manual garbage collection can be done by a dedicated garbage-collection thread (if the list "to be freed later" is shared by all the threads); alternatively, cleaning up the "to be freed" list can be done by each worker thread as part of an operation such as "pop" (in which case each worker thread can be responsible for its own "to be freed" list).In 2002, Maged Michael of IBM filed an application for a U.S. patent on the hazard pointer technique.Alternatives to hazard pointers include reference counting.".
- Hazard_pointer wikiPageExternalLink amino-cbbs.sourceforge.net.
- Hazard_pointer wikiPageExternalLink atomic-ptr-plus.sourceforge.net.
- Hazard_pointer wikiPageExternalLink concurrencykit.org.
- Hazard_pointer wikiPageExternalLink libcds.sourceforge.net.
- Hazard_pointer wikiPageExternalLink www.johantorp.com.
- Hazard_pointer wikiPageExternalLink ieeetpds-2004.pdf.
- Hazard_pointer wikiPageID "2098082".
- Hazard_pointer wikiPageRevisionID "602188601".
- Hazard_pointer hasPhotoCollection Hazard_pointer.
- Hazard_pointer subject Category:Programming_constructs.
- Hazard_pointer type Abstraction100002137.
- Hazard_pointer type Cognition100023271.
- Hazard_pointer type Concept105835747.
- Hazard_pointer type Content105809192.
- Hazard_pointer type Idea105833840.
- Hazard_pointer type ProgrammingConstructs.
- Hazard_pointer type PsychologicalFeature100023100.
- Hazard_pointer comment "In a multithreaded computing environment, hazard pointers are one approach to solving the problems posed by dynamic memory management of the nodes in a lock-free data structure. These problems generally arise only in environments that don't have automatic garbage collection.Any lock-free data structure that uses the compare-and-swap primitive must deal with the ABA problem.".
- Hazard_pointer label "Hazard pointer".
- Hazard_pointer sameAs m.06l_1l.
- Hazard_pointer sameAs Q5687677.
- Hazard_pointer sameAs Q5687677.
- Hazard_pointer sameAs Hazard_pointer.
- Hazard_pointer wasDerivedFrom Hazard_pointer?oldid=602188601.
- Hazard_pointer isPrimaryTopicOf Hazard_pointer.