A substantially zero overhead mutual-exclusion apparatus and method (90, 120) is provided that allows concurrent reading and updating data while maintaining data coherency. That is, a data reading process executes the same sequence of instructions that would be executed if the data were never updated. Rather than depending exclusively on overhead-imposing locks, this mutual-exclusion mechanism tracks an execution history (138) of a thread (16, 112) to determine safe times for processing a current generation (108, 130, 131) of data updates while a next generation (110, 132, 133) of data updates is concurrently being saved. A thread is any locus of control, such as a processor. A summary of thread activity (106, 122) tracks which threads have passed through a quiescent state after the current generation of updates was started. When the last thread related to the current generation passes through a quiescent state, the summary of thread activity signals a callback processor (104, 124)... |
Citations|
| US4747043 | Mar 27, 1987 | May 24, 1988 | Prime Computer, Inc. | Multiprocessor cache coherence system | | US5027316 | Aug 8, 1989 | Jun 25, 1991 | International Business Machines Corporation | Versioning of message formats in a 24-hour operating environment | | US5185861 | Aug 19, 1991 | Feb 9, 1993 | Sequent Computer Systems, Inc. | Cache affinity scheduler | | US5214766 | Aug 19, 1992 | May 25, 1993 | International Business Machines Corporation | Data prefetching based on store information in multi-processor caches | | US5249283 | Dec 24, 1990 | Sep 28, 1993 | NCR Corporation | Cache coherency method and apparatus for a multiple path interconnection network |
Referenced by|
| US5644768 | Dec 9, 1994 | Jul 1, 1997 | Borland International, Inc. | Systems and methods for sharing resources in a multi-user environment | | US5713025 | Sep 8, 1994 | Jan 27, 1998 | Sun Microsystems, Inc. | Asynchronous arbiter using multiple arbiter elements to enhance speed | | US5717897 | Sep 9, 1996 | Feb 10, 1998 | Unisys Corporation | System for coordinating coherency of cache memories of multiple host computers of a distributed information system | | US5745778 | Jan 26, 1994 | Apr 28, 1998 | Data General Corporation | Apparatus and method for improved CPU affinity in a multiprocessor system | | US5799143 | Aug 26, 1996 | Aug 25, 1998 | Motorola, Inc. | Multiple context software analysis | | US5799182 | Jan 21, 1997 | Aug 25, 1998 | Ford Motor Company | Multiple thread micro-sequencer apparatus and method with a single processor | | US5828880 | Jul 6, 1995 | Oct 27, 1998 | Sun Microsystems, Inc. | Pipeline system and method for multiprocessor applications in which each of a plurality of threads execute all steps of a process characterized by normal and parallel steps on a respective datum | | US5829052 | Dec 10, 1996 | Oct 27, 1998 | Intel Corporation | Method and apparatus for managing memory accesses in a multiple multiprocessor cluster system | | US5835906 | Jul 1, 1996 | Nov 10, 1998 | Sun Microsystems, Inc. | Methods and apparatus for sharing stored data objects in a computer system | | US5848402 | Aug 6, 1996 | Dec 8, 1998 | AI Ware, Inc. | Universal system for artificial intelligence based learning, categorization, and optimization | | US5860120 | Dec 9, 1996 | Jan 12, 1999 | Intel Corporation | Directory-based coherency system using two bits to maintain coherency on a dual ported memory system | | US5875339 | May 15, 1997 | Feb 23, 1999 | Sun Microsystems, Inc. | Asynchronous arbiter using multiple arbiter elements to enhance speed | | US5884308 | Nov 12, 1996 | Mar 16, 1999 | British Telecommunications public limited company | Updating distributed data files using active token distributed at different times to different sites | | US5905998 | May 19, 1997 | May 18, 1999 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction processing in a packet switched cache coherent multiprocessor system | | US5913925 | Dec 16, 1996 | Jun 22, 1999 | International Business Machines Corporation | Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order | | US5924098 | Jun 30, 1997 | Jul 13, 1999 | Sun Microsystems, Inc. | Method and apparatus for managing a linked-list data structure | | US5940813 | Jul 26, 1996 | Aug 17, 1999 | Citibank, N.A. | Process facility management matrix and system and method for performing batch, processing in an on-line environment | | US5951672 | Jul 2, 1997 | Sep 14, 1999 | International Business Machines Corporation | Synchronization method for work distribution in a multiprocessor system | | US5966543 | Jun 26, 1997 | Oct 12, 1999 | International Business Machines Corporation | Method of using collaborative spinlocks to provide exclusive access to a resource in a multiprocessor computer system | | US5991790 | Jul 1, 1996 | Nov 23, 1999 | Sun Microsystems, Inc. | Generation and delivery of signals in a two-level, multithreaded system | | US6044438 | Jul 10, 1997 | Mar 28, 2000 | International Business Machiness Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems | | US6047390 | Dec 22, 1997 | Apr 4, 2000 | Motorola, Inc. | Multiple context software analysis | | US6078997 | Dec 9, 1996 | Jun 20, 2000 | Intel Corporation | Directory-based coherency system for maintaining coherency in a dual-ported memory system | | US6092155 | Jul 10, 1997 | Jul 18, 2000 | International Business Machines Corporation | Cache coherent network adapter for scalable shared memory processing systems | | US6105049 | Aug 25, 1998 | Aug 15, 2000 | International Business Machines Corporation | Resource lock/unlock capability in multithreaded computer environment | | US6105050 | Aug 25, 1998 | Aug 15, 2000 | International Business Machines Corporation | System for resource lock/unlock capability in multithreaded computer environment | | US6112222 | Aug 25, 1998 | Aug 29, 2000 | International Business Machines Corporation | Method for resource lock/unlock capability in multithreaded computer environment | | US6122659 | Sep 10, 1999 | Sep 19, 2000 | International Business Machines Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems | | US6122674 | Sep 10, 1999 | Sep 19, 2000 | International Business Machines Corporation | Bi-directional network adapter for interfacing local node of shared memory parallel processing system to multi-stage switching network for communications with remote node | | US6128705 | Jan 7, 1998 | Oct 3, 2000 | International Business Machines Corporation | Method and apparatus for executing multiply-initiated, multiply-sourced variable delay system bus operations | | US6128706 | Feb 3, 1998 | Oct 3, 2000 | Institute for the Development of Emerging Architectures, L.L.C. | Apparatus and method for a load bias--load with intent to semaphore | | US6134627 | Nov 4, 1996 | Oct 17, 2000 | Sun Microsystems, Inc. | Thread synchronization in a computer controlled by an object-based program | | US6151663 | Jan 2, 1998 | Nov 21, 2000 | Intel Corporation | Cluster controller for memory and data cache in a multiple cluster processing system | | US6167424 | Oct 27, 1997 | Dec 26, 2000 | Sun Microsystems, Inc. | Method and apparatus for concurrent thread synchronization | | US6212608 | Jun 22, 1998 | Apr 3, 2001 | Sun Microsystems, Inc. | Method and apparatus for thread synchronization in an object-based system | | US6219690 | Nov 1, 1996 | Apr 17, 2001 | International Business Machines Corporation | Apparatus and method for achieving reduced overhead mutual exclusion and maintaining coherency in a multiprocessor system utilizing execution history and thread monitoring | | US6260057 | Mar 1, 1995 | Jul 10, 2001 | Sun Microsystems, Inc. | Apparatus and method for high performance implementation of system calls | | US6278963 | Jul 1, 1998 | Aug 21, 2001 | OPNET Technologies, Inc. | System architecture for distribution of discrete-event simulations | | US6343346 | Mar 1, 2000 | Jan 29, 2002 | International Business Machines Corporation | Cache coherent network adapter for scalable shared memory processing systems | | US6510437 | Sep 26, 2000 | Jan 21, 2003 | Sun Microsystems, Inc. | Method and apparatus for concurrent thread synchronization | | US6539464 | Mar 23, 2001 | Mar 25, 2003 | | Memory allocator for multithread environment | | US6658652 | Jun 8, 2000 | Dec 2, 2003 | International Business Machines Corporation | Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing | | US6662359 | Jul 20, 2000 | Dec 9, 2003 | International Business Machines Corporation | System and method for injecting hooks into Java classes to handle exception and finalization processing | | US6678772 | Dec 19, 2000 | Jan 13, 2004 | International Businesss Machines Corporation | Adaptive reader-writer lock | | US6684262 | Oct 25, 2000 | Jan 27, 2004 | International Business Machines Corporation | Method and system for controlling peripheral device interface behavior using thread registration | | US6735758 | Jul 6, 2000 | May 11, 2004 | International Business Machines Corporation | Method and system for SMP profiling using synchronized or nonsynchronized metric variables with support across multiple systems | | US6742178 | Jul 20, 2000 | May 25, 2004 | International Business Machines Corporation | System and method for instrumenting application class files with correlation information to the instrumentation | | US6745027 | Mar 13, 2001 | Jun 1, 2004 | Seekernet Incorporated | Class switched networks for tracking articles | | US6760909 | Jul 14, 1998 | Jul 6, 2004 | Microsoft Corporation | Virtual memory system and methods | | US6823429 | Sep 10, 1999 | Nov 23, 2004 | International Business Machines Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems | | US6874144 | Apr 5, 1999 | Mar 29, 2005 | International Business Machines Corporation | System, method, and program for implementing priority inheritance in an operating system | | US6886162 | Jul 31, 1998 | Apr 26, 2005 | International Business Machines Corporation | High speed methods for maintaining a summary of thread activity for multiprocessor computer systems | | US6892331 | Jan 17, 2002 | May 10, 2005 | International Business Machines Corporation | Method and system for error detection in a managed application environment | | US6904594 | Jul 6, 2000 | Jun 7, 2005 | International Business Machines Corporation | Method and system for apportioning changes in metric variables in an symmetric multiprocessor (SMP) environment | | US6934540 | Jun 23, 2003 | Aug 23, 2005 | Seekernet, Inc. | Network formation in asset-tracking system based on asset class | | US6944615 | Jun 28, 2001 | Sep 13, 2005 | International Business Machines Corporation | System and method for avoiding deadlock situations due to pseudo-deleted entries | | US6996812 | Jun 18, 2001 | Feb 7, 2006 | International Business Machines Corporation | Software implementation of synchronous memory barriers | | US7133704 | Nov 12, 2004 | Nov 7, 2006 | Terahop Networks, Inc. | Manufacture of LPRF device wake up using wireless tag | | US7155264 | Nov 12, 2004 | Dec 26, 2006 | Terahop Networks, Inc. | Systems and methods having LPRF device wake up using wireless tag | | US7191272 | Dec 9, 2003 | Mar 13, 2007 | International Business Machines Corporation | Adaptive reader-writer lock | | US7200132 | Aug 8, 2005 | Apr 3, 2007 | Terahop Networks, Inc. | Forming ad hoc RSI networks among transceivers sharing common designation | | US7209468 | Aug 8, 2005 | Apr 24, 2007 | Terahop Networks, Inc. | Forming communication cluster of wireless AD HOC network based on common designation | | US7209771 | May 14, 2003 | Apr 24, 2007 | Terahop Networks, Inc. | Battery powered wireless transceiver having LPRF component and second wake up receiver | | US7221668 | Aug 8, 2005 | May 22, 2007 | Terahop Networks, Inc. | Communications within population of wireless transceivers based on common designation | | US7287135 | Sep 29, 2004 | Oct 23, 2007 | International Business Machines Corporation | Adapting RCU for real-time operating system usage | | US7349926 | Mar 30, 2004 | Mar 25, 2008 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups | | US7353346 | Mar 24, 2006 | Apr 1, 2008 | International Business Machines Corporation | Read-copy-update (RCU) operations with reduced memory barrier usage | | US7389497 | Jul 6, 2000 | Jun 17, 2008 | International Business Machines Corporation | Method and system for tracing profiling information using per thread metric variables with reused kernel threads | | US7391321 | Jan 10, 2006 | Jun 24, 2008 | Terahop Networks, Inc. | Keyhole communication device for tracking and monitoring shipping container and contents thereof | | US7394361 | Jan 10, 2006 | Jul 1, 2008 | Terahop Networks, Inc. | Keyhole communication device for tracking and monitoring shipping container and contents thereof | | US7395263 | Oct 12, 2005 | Jul 1, 2008 | International Business Machines Corporation | Realtime-safe read copy update with lock-free readers | | US7395383 | Nov 1, 2005 | Jul 1, 2008 | International Business Machines Corporation | Realtime-safe read copy update with per-processor read/write locks | | US7430437 | Aug 8, 2005 | Sep 30, 2008 | Terahop Networks, Inc. | Transmitting sensor-acquired data using step-power filtering | | US7430627 | Feb 17, 2005 | Sep 30, 2008 | International Business Machines Corporation | Adaptive reader-writer lock | | US7472228 | Oct 27, 2004 | Dec 30, 2008 | International Business Machines Corporation | Read-copy update method | | US7522568 | Aug 8, 2005 | Apr 21, 2009 | Terahop Networks, Inc. | Propagating ad hoc wireless networks based on common designation and routine | | US7526381 | Jun 5, 2006 | Apr 28, 2009 | Terahop Networks, Inc. | Network aided terrestrial triangulation using stars (NATTS) | | US7529547 | Jun 5, 2006 | May 5, 2009 | Terahop Networks, Inc. | Using wake-up receivers for soft hand-off in wireless communications | | US7539520 | Jun 19, 2006 | May 26, 2009 | TeraHop Networks, Inc. | Remote sensor interface (RSI) having power conservative transceiver for transmitting and receiving wakeup signals | | US7542849 | Jun 5, 2006 | Jun 2, 2009 | Terahop Networks, Inc. | Network aided terrestrial triangulation using stars (NATTS) | | US7554442 | Jun 19, 2006 | Jun 30, 2009 | Terahop Networks, Inc. | Event-driven mobile hazmat monitoring | | US7563991 | Jun 8, 2006 | Jul 21, 2009 | Terahop Networks, Inc. | All weather housing assembly for electronic components | | US7574168 | Jun 16, 2006 | Aug 11, 2009 | Terahop Networks, Inc. | Selective GPS denial system | | US7574300 | Jun 16, 2006 | Aug 11, 2009 | Terahop Networks, Inc. | GPS denial device detection and location system | | US7583769 | Jun 16, 2006 | Sep 1, 2009 | Terahop Netowrks, Inc. | Operating GPS receivers in GPS-adverse environment | | US7650135 | Jun 5, 2006 | Jan 19, 2010 | Terahop Networks, Inc. | Remote sensor interface (RSI) stepped wake-up sequence | | US7653791 | Apr 11, 2008 | Jan 26, 2010 | International Business Machines Corporation | Realtime-safe read copy update with per-processor read/write locks | | US7681196 | Nov 18, 2004 | Mar 16, 2010 | Oracle International Corporation | Providing optimal number of threads to applications performing multi-tasking using threads | | US7685181 | Feb 26, 2007 | Mar 23, 2010 | International Business Machines Corporation | Method and system for utilizing a hierarchical bitmap structure to provide a fast and reliable mechanism to represent large deleted data sets in relational databases | | US7705747 | Aug 18, 2006 | Apr 27, 2010 | Terahop Networks, Inc. | Sensor networks for monitoring pipelines and power lines | | US7733818 | Dec 13, 2006 | Jun 8, 2010 | Terahop Networks, Inc. | Intelligent node communication using network formation messages in a mobile Ad hoc network | | US7734879 | Jul 27, 2006 | Jun 8, 2010 | International Business Machines Corporation | Efficiently boosting priority of read-copy update readers in a real-time data processing system | | US7734881 | Jul 17, 2007 | Jun 8, 2010 | International Business Machines Corporation | Adapting RCU for real-time operating system usage | | US7742744 | Jan 14, 2009 | Jun 22, 2010 | Terahop Networks, Inc. | Screening transmissions for power level and object identifier in asset monitoring and tracking systems | | US7742745 | May 29, 2009 | Jun 22, 2010 | Terahop Networks, Inc. | LPRF device wake up using wireless tag | | US7742772 | Oct 31, 2006 | Jun 22, 2010 | Terahop Networks, Inc. | Determining relative elevation using GPS and ranging | | US7742773 | Oct 31, 2006 | Jun 22, 2010 | Terahop Networks, Inc. | Using GPS and ranging to determine relative elevation of an asset | | US7746838 | Feb 8, 2009 | Jun 29, 2010 | Terahop Networks, Inc. | Logically distinct wireless data communication networks sharing gateway for communicating with external networks | | US7747805 | May 6, 2008 | Jun 29, 2010 | International Business Machines Corporation | Adaptive reader-writer lock | | US7752621 | Sep 15, 2004 | Jul 6, 2010 | International Business Machines Corporation | System, method and program for implementing priority inheritance in an operating system | | US7770170 | Jul 12, 2005 | Aug 3, 2010 | Microsoft Corporation | Blocking local sense synchronization barrier | | US7783246 | Jun 16, 2006 | Aug 24, 2010 | TeraHop Networks, Inc. | Tactical GPS denial and denial detection system | | US7788332 | May 6, 2005 | Aug 31, 2010 | Cornell Research Foundation, Inc. | Sensor-network processors using event-driven architecture | | US7818306 | Apr 21, 2007 | Oct 19, 2010 | International Business Machines Corporation | Read-copy-update (RCU) operations with reduced memory barrier usage | | US7830273 | Aug 18, 2006 | Nov 9, 2010 | Terahop Networks, Inc. | Sensor networks for pipeline monitoring | | US7830850 | Dec 24, 2008 | Nov 9, 2010 | Terahop Networks, Inc. | Class-switching in class-based data communcations network | | US7830852 | Feb 8, 2009 | Nov 9, 2010 | Terahop Networks, Inc. | Automatic and dynamic changing of class in class-based asset tracking and monitoring systems | | US7904436 | May 21, 2008 | Mar 8, 2011 | International Business Machines Corporation | Realtime-safe read copy update with lock-free readers | | US7907941 | Jan 1, 2007 | Mar 15, 2011 | Terahop Networks, Inc. | Determining presence of radio frequency communication device | | US7940716 | Jul 3, 2006 | May 10, 2011 | Terahop Networks, Inc. | Maintaining information facilitating deterministic network routing | | US7940717 | Oct 31, 2007 | May 10, 2011 | Terahop Networks, Inc. | Selective wake-up of data packet radio component using common designation communication | | US7940719 | Feb 8, 2009 | May 10, 2011 | Terahop Networks, Inc. | Automatic and dynamic changing of class in class-based networks | | US7940736 | Oct 31, 2007 | May 10, 2011 | Terahop Networks, Inc. | Selective response to radio frequency (RF) transmissions by wireless two-way RF data communication device | | US7941095 | May 6, 2009 | May 10, 2011 | Terahop Networks, Inc. | LPRF device wake up using wireless tag | | US7953708 | Jul 28, 2008 | May 31, 2011 | International Business Machines Corporation | Optimizing grace period detection for preemptible read-copy update on uniprocessor systems | | US7953778 | May 20, 2008 | May 31, 2011 | International Business Machines Corporation | Efficient support of consistent cyclic search with read-copy update and parallel updates | | US7987166 | Apr 22, 2007 | Jul 26, 2011 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups | | US8020160 | Jul 28, 2008 | Sep 13, 2011 | International Business Machines Corporation | User-level read-copy update that does not require disabling preemption or signal handling | | US8050625 | Jan 7, 2009 | Nov 1, 2011 | Terahop Networks, Inc. | Wireless reader tags (WRTs) with sensor components in asset monitoring and tracking systems | | US8055860 | Jan 27, 2008 | Nov 8, 2011 | International Business Machines Corporation | Read-copy-update (RCU) operations with reduced memory barrier usage | | US8055918 | Apr 3, 2008 | Nov 8, 2011 | International Business Machines Corporation | Optimizing preemptible read-copy update for low-power usage by avoiding unnecessary wakeups | | US8078139 | May 14, 2010 | Dec 13, 2011 | TeraHop Networks, Inc. | Wireless data communications network system for tracking container | | US8095070 | Jan 7, 2009 | Jan 10, 2012 | Terahop Networks, Inc. | Wireless reader tags (WRTS) with sensor components in asset monitoring and tracking systems | | US8108696 | Jul 24, 2008 | Jan 31, 2012 | International Business Machines Corporation | Optimizing non-preemptible read-copy update for low-power usage by avoiding unnecessary wakeups | | US8117599 | Apr 29, 2008 | Feb 14, 2012 | International Business Machines Corporation | Tracing profiling information using per thread metric variables with reused kernel threads | | US8144671 | Jul 3, 2006 | Mar 27, 2012 | | Communicating via nondeterministic and deterministic network routing | | US8161250 | May 20, 2009 | Apr 17, 2012 | Sharp Laboratories of America, Inc. | Methods and systems for partially-transacted data concurrency | | US8176489 | Dec 9, 2004 | May 8, 2012 | International Business Machines Corporation | Use of rollback RCU with read-side modifications to RCU-protected data structures | | US8185697 | Jan 7, 2005 | May 22, 2012 | Hewlett-Packard Development Company, L.P. | Methods and systems for coherence protocol tuning | | US8185704 | Sep 2, 2009 | May 22, 2012 | International Business Machines Corporation | High performance real-time read-copy update | | US8195893 | Nov 3, 2008 | Jun 5, 2012 | International Business Machines Corporation | Eliminating synchronous grace period detection for non-preemptible read-copy update on uniprocessor systems | | US8218514 | May 27, 2009 | Jul 10, 2012 | Google, Inc. | Wireless data communications network system for tracking containers | | US8223680 | Jan 13, 2009 | Jul 17, 2012 | Google Inc. | Mesh network control using common designation wake-up |
Claims1. A mutual-exclusion apparatus for maintaining data coherency while concurrently reading and updating a current generation data element stored in first sites of a memory of a computer, the mutual-exclusion apparatus comprising: - a first thread controlling the reading of the current generation data element;
- a second thread controlling the updating of the current generation data element and storing the updated data element in second sites as a next generation data element;
- a thread activity monitor producing and storing in the memory, execution history data indicative of states of the first and second threads; and
- an element processor processing the current and next generation data elements in response to the execution history data that indicate the first and second threads have one of entered a predetermined state and passed through the predetermined state.
2. The mutual-exclusion apparatus of claim 1 in which the thread activity monitor includes at least one of a bitmask, a dense bitmap, a distributed bitmap, a hierarchical bitmap, and a per-thread quiescent state counter. 3. The mutual-exclusion apparatus of claim 2 in which the thread activity monitor further includes a generation counter. 4. The mutual-exclusion apparatus of claim 2 in which the thread activity monitor further includes a thread counter. 5. The apparatus of claim 1 in which the predetermined state is a quiescent state. 6. The mutual-exclusion apparatus of claim 5 in which the quiescent state includes at least one of an idle loop, a user mode, a context switching point, a wait for user input, a wait for messages, a wait for transactions, a wait for control input, a base priority level, an event queue processor, and an artificially created quiescent state. 7. The mutual-exclusion apparatus of claim 1 in which the element processor processes the first and next generation data elements such that the current generation data element is replaced by the next generation data element. 8. The mutual-exclusion apparatus of claim 1 in which the current generation data elements are tracked by a first callback that is an element of a current generation data structure and the next generation data elements are tracked by a second callback that is an element of a next generation data structure, and the element processor is a callback processor that processes the current generation data elements in accordance with a processing function stored in the first callback and processes the next generation data elements in accordance with a processing function stored in the second callback. 9. The mutual-exclusion apparatus of claim 1 in which each of the first and second threads includes at least one of a processor, a process, a task, an interrupt handler, a service procedure, a co-routine, and a transaction. 10. The mutual-exclusion apparatus of claim 1 in which the element processor processes the current and next generation data elements when at least one of a controlling thread enters a quiescent state, leaves a quiescent state, a reader thread accesses a data structure, an updater thread updates a data structure, and an interrupt is received by the element processor. 11. The apparatus of claim 1 in which the computer is of a multiprocessor type. 12. In a computer system, a method for providing mutual-exclusion between current and next generation data elements, the next generation data element being formed by updating while concurrently reading the current generation data element stored in first memory sites of a computer, the mutual-exclusion method comprising the steps of: - reading under control of a first thread the current generation data element;
- updating under control of a second thread the current generation data element to form and store in second memory sites the next generation data element;
- monitoring the first and second threads to produce execution history data indicative of states of the first and second threads; and
- processing the current and next generation data elements in response to execution history data that indicate the first and second threads have one of entered a predetermined state and passed through the predetermined state.
13. The method of claim 12 in which the execution history data are stored in at least one of a bitmask, a dense bitmap, a distributed bitmap, a hierarchical bitmap, and a per-thread quiescent state counter. 14. The method of claim 13 in which the execution history data are further stored in a generation counter. 15. The method of claim 13 in which the execution history data are further stored in a thread counter. 16. The method of claim 12 in which the predetermined state is a quiescent state. 17. The method of claim 16 in which the quiescent state includes at least one of an idle loop, a user mode, a context switching point, a wait for user input, a wait for messages, a wait for transactions, a wait for control input, a base priority level, an event queue processor, and an artificially created quiescent state. 18. The method of claim 12 further including a step of resetting the execution history data in response to performing the processing step. 19. The method of claim 12 in which the current generation data elements are tracked by a first callback that is an element of a current generation data structure and the next generation data elements are tracked by a second callback that is an element of a next generation data structure, and the processing step further includes processing the current generation data elements in accordance with a processing function stored in the first callback and processing the next generation data elements in accordance with a processing function stored in the second callback. 20. The method of claim 12 in which the processing step comprises replacing the current generation data element with the next generation data element in response to the execution history data indicating that the first and second threads have one of entered a predetermined state and passed through the predetermined state. 21. The method of claim 12 in which each of the first and second threads includes at least one of a processor, a process, a task, an interrupt handler, a service procedure, and a transaction. 22. The method of claim 12 in which the computer system includes at least one of a reader thread, an updater thread, and a callback processor and in which the processing step commences when one of the first and second threads one of enters a quiescent state, leaves the quiescent state, the reader thread accesses a data structure, the updater thread updates a data structure, and the callback processor receives an interrupt. 23. The method of claim 12 in which the computer is of a multiprocessor type. 24. A computer system operating in accordance with the method of claim 12. |