909:[Note:It can be shown that programs that correctly use mutexes and memory_order_seq_cst operations to prevent all data races and use no other synchronization operations behave as if the operations executed by their constituent threads were simply interleaved, with each value computation of an object being taken from the last side effect on that object in that interleaving. This is normally referred to as âsequential consistencyâ. However, this applies only to data-race-free programs, and data-race-free programs cannot observe most program transformations that do not change single-threaded program semantics. In fact, most single-threaded program transformations continue to be allowed, since any program that behaves differently as a result must perform an undefined operation.â end note
842:" relation; intuitively, if we can prove that we are in a situation where one memory operation X is guaranteed to be executed to completion before another memory operation Y begins, then we say that "X happens-before Y". If neither "X happens-before Y" nor "Y happens-before X", then we say that X and Y are "not ordered by the hb1 relation". So, the clause "...and they are not ordered by the hb1 relation of the execution" can be intuitively translated as "...and X and Y are potentially concurrent".
1183:
3011:
2242:
1037:, where a user who starts a channel automatically acquires channel-operator privileges. If two users on different servers, on different ends of the same network, try to start the same-named channel at the same time, each user's respective server will grant channel-operator privileges to each user, since neither server will yet have received the other server's signal that it has allocated that channel. (This problem has been largely
27:
999:. PUFs can be created by designing circuit topologies with identical paths to a node and relying on manufacturing variations to randomly determine which paths will complete first. By measuring each manufactured circuit's specific set of race condition outcomes, a profile can be collected for each circuit and kept secret in order to later verify a circuit's identity.
1025:
error handling, or the success of the entire task can be verified afterwards, before continuing. A more common approach is to simply verify that enough system resources are available before starting a task; however, this may not be adequate because in complex systems the actions of other running programs can be unpredictable.
733:'). Similarly, if one thread reads from a location while another thread is writing to it, it may be possible for the read to return a value that is some arbitrary and meaningless combination of the bits representing the value that the memory location held before the write, and of the bits representing the value being written.
1048:" covers the state of the network (what channels exist, as well as what users started them and therefore have what privileges), which each server can freely change as long as it signals the other servers on the network about the changes so that they can update their conception of the state of the network. However, the
1098:(among other power facilities). A race condition existed in the alarm subsystem; when three sagging power lines were tripped simultaneously, the condition prevented alerts from being raised to the monitoring technicians, delaying their awareness of the problem. This software flaw eventually led to the
865:
A critical difference between the C++ approach and the Java approach is that in C++, a data race is undefined behavior, whereas in Java, a data race merely affects "inter-thread actions". This means that in C++, an attempt to execute a program containing a data race could (while still adhering to the
434:
A race condition can arise in software when a computer program has multiple code paths that are executing at the same time. If the multiple code paths take a different amount of time than expected, they can finish in a different order than expected, which can cause software bugs due to unanticipated
917:
There are various theorems, often provided in the form of memory models, that provide SC for DRF guarantees given various contexts. The premises of these theorems typically place constraints upon both the memory model (and therefore upon the implementation), and also upon the programmer; that is to
728:
This can be dangerous because on many platforms, if two threads write to a memory location at the same time, it may be possible for the memory location to end up holding a value that is some arbitrary and meaningless combination of the bits representing the values that each thread was attempting to
860:
Two accesses to (reads of or writes to) the same variable are said to be conflicting if at least one of the accesses is a write...When a program contains two conflicting accesses (§17.4.1) that are not ordered by a happens-before relationship, it is said to contain a data race...a data race cannot
716:
Not all regard data races as a subset of race conditions. The precise definition of data race is specific to the formal concurrency model being used, but typically it refers to a situation where a memory operation in one thread could potentially attempt to access a memory location at the same time
899:
A program must be correctly synchronized to avoid the kinds of counterintuitive behaviors that can be observed when code is reordered. The use of correct synchronization does not ensure that the overall behavior of a program is correct. However, its use does allow a programmer to reason about the
893:
This is an extremely strong guarantee for programmers. Programmers do not need to reason about reorderings to determine that their code contains data races. Therefore they do not need to reason about reorderings when determining whether their code is correctly synchronized. Once the determination
1024:
not long after landing. A solution is for software to request and reserve all the resources it will need before beginning a task; if this request fails then the task is postponed, avoiding the many points where failure could have occurred. Alternatively, each of those points can be equipped with
878:
manner, greatly easing reasoning about the concurrent behavior of the program. Formal memory models that provide such a guarantee are said to exhibit an "SC for DRF" (Sequential
Consistency for Data Race Freedom) property. This approach has been said to have achieved recent consensus (presumably
163:
combines signals that have traveled along different paths from the same source. The inputs to the gate can change at slightly different times in response to a change in the source signal. The output may, for a brief period, change to an unwanted state before settling back to the designed state.
1019:
A different form of race condition exists in file systems where unrelated programs may affect each other by suddenly using up available resources such as disk space, memory space, or processor cycles. Software not carefully designed to anticipate and handle this race situation may then become
1052:
across the network makes possible the kind of race condition described. In this case, heading off race conditions by imposing a form of control over access to the shared resourceâsay, appointing one server to control who holds what privilegesâwould mean turning the distributed network into a
913:
Note that the C++ draft specification admits the possibility of programs that are valid but use synchronization operations with a memory_order other than memory_order_seq_cst, in which case the result may be a program which is correct but for which no guarantee of sequentially consistency is
736:
On many platforms, special memory operations are provided for simultaneous access; in such cases, typically simultaneous access using these special operations is safe, but simultaneous access using other memory operations is dangerous. Sometimes such special operations (which are safe for
1020:
unpredictable. Such a risk may be overlooked for a long time in a system that seems very reliable. But eventually enough data may accumulate or enough other software may be added to critically destabilize many parts of a system. An example of this occurred with the near loss of the
707:
In this case, the final value is 1 instead of the expected result of 2. This occurs because here the increment operations are not mutually exclusive. Mutually exclusive operations are those that cannot be interrupted while accessing some resource such as a memory location.
476:
and depends on the relative timing between interfering threads. Problems of this nature can therefore disappear when running in debug mode, adding extra logging, or attaching a debugger. A bug that disappears like this during debugging attempts is often referred to as a
349:
A practical example of a race condition can occur when logic circuitry is used to detect certain outputs of a counter. If all the bits of the counter do not change exactly simultaneously, there will be intermediate patterns that can trigger false matches.
799:
if it contains two potentially concurrent conflicting actions, at least one of which is not atomic, and neither happens before the other, except for the special case for signal handlers described below . Any such data race results in undefined behavior.
866:
spec) crash or could exhibit insecure or bizarre behavior, whereas in Java, an attempt to execute a program containing a data race may produce undesired concurrency behavior but is otherwise (assuming that the implementation adheres to the spec) safe.
914:
provided. In other words, in C++, some correct programs are not sequentially consistent. This approach is thought to give C++ programmers the freedom to choose faster program execution at the cost of giving up ease of reasoning about their program.
900:
possible behaviors of a program in a simple way; the behavior of a correctly synchronized program is much less dependent on possible reorderings. Without correct synchronization, very strange, confusing and counterintuitive behaviors are possible.
1228:
in 1934, an accident occurred because the signalman accepted another train before the fireman arrived. Modern signalling practice removes the race condition by making it possible for the driver to instantaneously contact the signal box by radio.
1015:
or the like) has exclusive access to the file, and all other processes that need to access the data in that file do so only via interprocess communication with that one process. This requires synchronization at the process level.
1555:
1224:. According to this rule, if a train was stopped on a running line by a signal, the locomotive fireman would walk to the signal box in order to remind the signalman that the train was present. In at least one case, at
717:
that a memory operation in another thread is writing to that memory location, in a context where this is dangerous. This implies that a data race is different from a race condition as it is possible to have
218:
769:
The precise definition of data race differs across formal concurrency models. This matters because concurrent behavior is often non-intuitive and so formal reasoning is sometimes applied.
304:
925:
with sequentially consistent special operations), VAX memory model, and data-race-free-0 memory models. The PLpc memory model provides SC for DRF and allows the optimizations of the TSO (
845:
The paper considers dangerous only those situations in which at least one of the memory operations is a "data operation"; in other parts of this paper, the paper also defines a class of "
1563:
918:
say, typically it is the case that there are programs which do not meet the premises of the theorem and which could not be guaranteed to execute in a sequentially consistent manner.
392:
occurs when it results in multiple transitions when only one is intended. They are due to interaction between gates. It can be eliminated by using no more than two levels of gating.
2016:
949:
implications. A race condition allows an attacker with access to a shared resource to cause other actors that utilize that resource to malfunction, resulting in effects including
172:
for further systems that contain memory, for example, the system can rapidly depart from its designed behaviour (in effect, the temporary glitch becomes a permanent glitch).
823:
if they access the same location and at least one of them is a write operation... "Two memory operations, x and y, in a sequentially consistent execution form a race ăx,yă,
1814:
1121:
Thread Safety
Analysis is a static analysis tool for annotation-based intra-procedural static analysis, originally implemented as a branch of gcc, and now reimplemented in
846:
1165:
DataRaceBench is a benchmark suite designed to systematically and quantitatively evaluate data race detection tools which analyze multi-threaded applications written in
261:
344:
324:
238:
2337:
1139:, a sampling based, SIMD vectorization optimization and shared memory threading assistance tool for C, C++, C#, and Fortran software developers and architects;
2006:
926:
905:
By contrast, a draft C++ specification does not directly require an SC for DRF property, but merely observes that there exists a theorem providing it:
489:
Assume that two threads each increment the value of a global integer variable by 1. Ideally, the following sequence of operations would take place:
1007:
Two or more programs may collide in their attempts to modify or access a file system, which can result in data corruption or privilege escalation.
596:
In the case shown above, the final value is 2, as expected. However, if the two threads run simultaneously without locking or synchronization (via
729:
write; this could result in memory corruption if the resulting value is one that neither thread attempted to write (sometimes this is called a '
2063:
1981:
2427:
937:
with processor consistency special operations) models. DRFrlx provides a sketch of an SC for DRF theorem in the presence of relaxed atomics.
442:. Critical race conditions often happen when the processes or threads depend on some shared state. Operations upon shared states are done in
182:
1011:
provides a commonly used solution. A more cumbersome remedy involves organizing the system in such a way that one unique process (running a
2279:
730:
373:
occurs when the order in which internal variables are changed does not determine the eventual state that the state machine will end up in.
1680:
2151:
1135:, a memory and thread checking and debugging tool to increase the reliability, security, and accuracy of C/C++ and Fortran applications;
346:
changes from false to true then a brief period will ensue during which both inputs are true, and so the gate's output will also be true.
1900:
894:
that the code is correctly synchronized is made, the programmer does not need to worry that reorderings will affect his or her code.
399:
occurs when an input has two transitions in less than the total feedback propagation time. Sometimes they are cured using inductive
1824:
1496:
3046:
3041:
2113:
1429:
1921:
Fuhrer, R.M.; Lin, B.; Nowick, S.M. (March 1995). "Algorithms for the optimal state assignment of asynchronous state machines".
889:
If a program is correctly synchronized, then all executions of the program will appear to be sequentially consistent (§17.4.3).
3066:
2408:
874:
An important facet of data races is that in some contexts, a program that is free of data races is guaranteed to execute in a
1938:
1655:
879:
compared to approaches which guarantee sequential consistency in all cases, or approaches which do not guarantee it at all).
2448:
2675:
1956:
1154:
tool for detecting synchronisation errors in C, C++ and
Fortran programs that use the POSIX pthreads threading primitives.
3036:
2698:
1303:
600:), the outcome of the operation could be wrong. The alternative sequence of operations below demonstrates this scenario:
1638:
Colesa, Adrian; Tudoran, Radu; Banescu, Sebastian (2008). "Software Random Number
Generation Based on Race Conditions".
1368:
1347:
804:
The parts of this definition relating to signal handlers are idiosyncratic to C++ and are not typical of definitions of
3056:
2587:
2146:
2136:
2056:
1273:
1110:
Many software tools exist to help detect race conditions in software. They can be largely categorized into two groups:
2443:
1021:
117:
on the sequence or timing of other uncontrollable events, leading to unexpected or inconsistent results. It becomes a
2693:
2670:
2141:
721:
due to timing even in a program without data races, for example, in a program in which all memory accesses use only
2272:
992:
270:
1057:
886:
A program is correctly synchronized if and only if all sequentially consistent executions are free of data races.
2665:
2480:
1974:
2003:
2772:
2686:
2635:
2086:
996:
2996:
2830:
2681:
2368:
2246:
2212:
2049:
1556:"CVE-2015-8461: A race condition when handling socket errors can lead to an assertion failure in resolver.c"
1447:
1278:
981:
718:
1038:
3015:
2961:
2421:
2265:
2222:
2207:
2202:
1997:
1559:
1248:
1099:
423:
921:
The DRF1 memory model provides SC for DRF and allows the optimizations of the WO (weak ordering), RCsc (
2940:
2735:
2620:
2582:
2432:
2322:
473:
454:
1469:
827:
x and y conflict, and they are not ordered by the hb1 relation of the execution. The race ăx,yă, is a
2956:
2935:
2880:
2767:
2757:
2730:
2592:
2197:
2096:
1317:
1194:
458:
362:
occurs when the order in which internal variables are changed determines the eventual state that the
1989:
1412:
2910:
2536:
2475:
2388:
1115:
1083:
1060:, in which case the performance of the program can be dependent on the speed of the network link.
745:
operations, whereas the ordinary operations (which are unsafe for simultaneous access) are called
2971:
2966:
2825:
2416:
2227:
1161:
There are several benchmarks designed to evaluate the effectiveness of data race detection tools
1111:
875:
597:
415:
encourage designers to recognize and eliminate race conditions before they cause problems. Often
435:
behavior. A race can also occur between two programs, resulting in security issues (see below.)
3061:
2710:
2642:
2546:
2438:
2393:
1684:
1519:
Kourosh
Gharachorloo and Sarita V. Adve and Anoop Gupta and John L. Hennessy and Mark D. Hill,
977:
2802:
2762:
2715:
2705:
2500:
2363:
2302:
2101:
1640:
2008 10th
International Symposium on Symbolic and Numeric Algorithms for Scientific Computing
1217:
930:
144:
1845:
Schmidt, Robert; Leventhal, Daniel K; Mallet, Nicolas; Chen, Fujun; Berke, Joshua D (2013).
1520:
243:
3051:
2742:
2630:
2625:
2615:
2602:
2398:
2072:
1898:
Karam, G.M.; Buhr, R.J.A. (August 1990). "Starvation and
Critical Race Analyzers for Ada".
1102:. GE Energy later developed a software patch to correct the previously undiscovered error.
1069:
954:
20:
1614:"security: stat cache *very large* race condition if caching when follow_symlink disabled"
453:
A data race is a type of race condition. Data races are important parts of various formal
8:
2905:
2860:
2660:
2526:
2091:
1967:
A Novel
Framework for Solving the State Assignment Problem for Event-Based Specifications
1243:
1079:
machine, which led to the death of at least three patients and injuries to several more.
934:
922:
835:
Here we have two memory operations accessing the same location, one of which is a write.
776:, in draft N4296 (2014-11-19), defines data race as follows in section 1.10.23 (page 14)
1982:"Secure programmer: Prevent race conditionsâResource contention can be used against you"
1588:
1534:
2930:
2779:
2752:
2577:
2541:
2531:
2490:
2332:
2312:
2307:
2288:
1944:
1871:
1846:
1728:
1661:
1487:
1428:
Adve, Sarita & Hill, Mark & Miller, Barton & H. B. Netzer, Robert. (1991).
1225:
1213:
Neuroscience is demonstrating that race conditions can occur in mammal brains as well.
1012:
466:
329:
309:
223:
140:
2976:
2652:
2610:
2505:
1970:
1934:
1876:
1782:
1651:
1263:
1076:
950:
946:
849:" which are safe for potentially simultaneous use, in contrast to "data operations".
764:
400:
51:
838:
The hb1 relation is defined elsewhere in the paper, and is an example of a typical "
2986:
2785:
2720:
2567:
2383:
2378:
2373:
2342:
2161:
2128:
1948:
1926:
1909:
1866:
1858:
1665:
1643:
1329:
1095:
722:
472:
A race condition can be difficult to reproduce and debug because the end result is
447:
443:
416:
148:
129:
114:
2024:
1746:
2850:
2790:
2725:
2572:
2562:
2495:
2485:
2327:
2317:
2118:
2108:
2010:
1960:
1953:
1764:
1432:. ACM SIGARCH Computer Architecture News. 19. 234â243. 10.1109/ISCA.1991.1021616.
1258:
1157:
Data Race
Detector is designed to find data races in the Go Programming language.
1132:
1049:
1045:
1523:, Journal of Parallel and Distributed Computing, 1992, volume 15, pages 399â407.
2797:
2454:
2347:
1930:
1253:
1238:
961:
839:
481:". It is therefore better to avoid race conditions by careful software design.
960:
A specific kind of race condition involves checking for a predicate (e.g. for
3030:
2870:
2747:
2176:
1707:
1698:
1136:
363:
136:
2156:
1470:"Semantics of Shared Variables & Synchronization (a.k.a. Memory Models)"
2470:
2166:
1880:
1819:
1647:
1613:
1283:
1268:
1008:
973:
439:
412:
169:
118:
2025:"Interview with Dmitriy Vyukov - the author of Relacy Race Detector (RRD)"
757:
operations, such a race may be nondeterministic but otherwise safe; but a
2991:
2192:
2031:
1966:
1702:
1390:
861:
cause incorrect behavior such as returning the wrong length for an array.
102:
1800:
1348:"ISO/IEC 9899:2011 - Information technology - Programming languages - C"
1182:
964:), then acting on the predicate, while the state can change between the
791:
they are unsequenced, and at least one is performed by a signal handler.
753:
race; on many platforms, where there is a race condition involving only
58:
changes from low to high, the circuit outputs a short spike of duration
2041:
2036:
1394:
1056:
Race conditions can also exist when a computer program is written with
1053:
centralized one (at least for that one part of the network operation).
403:
elements to effectively increase the time duration of an input signal.
160:
2019:, with sample source code and comparison to C code, by Chiral Software
1542:
Efficient
Coherence and Consistency for Specialized Memory Hierarchies
1333:
2865:
2840:
2257:
1913:
1489:
Designing Memory Consistency Models For Shared-Memory Multiprocessors
1087:
1073:
478:
465:
standards specify that a C or C++ program containing a data race has
132:'s doctoral thesis "The synthesis of sequential switching circuits".
1862:
1535:"Chapter 3: Efficient Support for and Evaluation of Relaxed Atomics"
2915:
2895:
2820:
1617:
1151:
1143:
264:
176:
106:
16:
When a system's behavior depends on timing of uncontrollable events
1847:"Canceling actions involves a race between basal ganglia pathways"
765:
Example definitions of data races in particular concurrency models
2920:
2900:
2875:
2510:
1923:
Advanced Research in VLSI, 1995. Proceedings., 16th Conference on
1221:
462:
326:
take longer to propagate to the second input than the first when
26:
2890:
2885:
1166:
1150:-based instrumentation, and supports PThreads; and Helgrind, a
1072:
can be disastrous. Race conditions were among the flaws in the
869:
165:
110:
19:"Critical race" redirects here. For the academic movement, see
1122:
151:
can prevent race conditions in distributed software systems.
1589:"Vulnerability in rmtree() and remove_tree(): CVE-2017-6512"
882:
For example, in Java, this guarantee is directly specified:
761:
race could lead to memory corruption or undefined behavior.
2925:
2855:
2845:
2171:
1592:
1147:
1091:
121:
when one or more of the possible behaviors is undesirable.
1844:
450:. Failure to obey this rule can corrupt the shared state.
2835:
2812:
1034:
824:
422:
As well as these problems, some logic elements can enter
267:), on another input in theory never output a true value:
1033:
In networking, consider a distributed chat network like
426:, which create further problems for circuit designers.
376:
213:{\displaystyle {\text{output}}=A\wedge {\overline {A}}}
159:
A typical example of a race condition may occur when a
1413:"Working Draft, Standard for Programming Language C++"
1220:, a race condition would arise in the carrying out of
1044:
In this case of a race condition, the concept of the "
991:
Race conditions are also intentionally used to create
385:
occurs when a signal and its complement are combined.
438:
Critical race conditions cause invalid execution and
332:
312:
273:
246:
226:
185:
1637:
2017:
Race conditions, security, and immutability in Java
1606:
1521:
Programming for Different Memory Consistency Models
1544:(PhD). University of Illinois at UrbanaâChampaign.
353:
338:
318:
298:
255:
232:
212:
1729:"Thread Safety Analysis â Clang 10 documentation"
3028:
1583:
1581:
2013:" (Secure Programming for Linux and Unix HOWTO)
1920:
1823:. Discover Magazine. 2013-08-03. Archived from
1304:The synthesis of sequential switching circuits.
831:iff at least one of x or y is a data operation.
419:can be added to eliminate some kinds of races.
945:Many software race conditions have associated
2273:
2057:
1681:"An Investigation of Therac-25 Accidents â I"
1578:
1548:
749:operations. This is probably why the term is
299:{\displaystyle A\wedge {\overline {A}}\neq 1}
1815:"How Brains Race to Cancel Errant Movements"
1318:"Hazards, Critical Races, and Metastability"
870:Sequential Consistency for Data Race Freedom
54:of the logic elements. When the input value
1430:Detecting Data Races on Weak Memory Systems
813:Detecting Data Races on Weak Memory Systems
788:they are performed by different threads, or
128:was already in use by 1954, for example in
113:where the system's substantive behavior is
2280:
2266:
2064:
2050:
1747:"ThreadSanitizer â Clang 10 documentation"
1901:IEEE Transactions on Software Engineering
1897:
1870:
1678:
1467:
30:Race condition in a logic circuit. Here,
2071:
1532:
1468:Adve, Sarita V.; Boehm, Hans-J. (2010).
1063:
1041:by various IRC server implementations.)
135:Race conditions can occur especially in
25:
1979:
1697:
1463:
1461:
306:. If, however, changes in the value of
3029:
2287:
2022:
1442:
1440:
1438:
1389:
795:The execution of a program contains a
2261:
2045:
1315:
976:exists in security-sensitive code, a
1980:Wheeler, David A. (7 October 2004).
1485:
1458:
1177:
1142:ThreadSanitizer, which uses binary (
940:
377:Static, dynamic, and essential forms
1969:" by Luciano Lavagno, Cho W. Moon,
1803:. July 25, 2019 – via GitHub.
1765:"Helgrind: a thread error detector"
1683:. Courses.cs.vt.edu. Archived from
1435:
175:Consider, for example, a two-input
13:
1274:Synchronization (computer science)
457:. The memory model defined in the
247:
168:but if this output functions as a
164:Certain systems can tolerate such
14:
3078:
1891:
1679:Leveson, Nancy; Turner, Clark S.
1173:
1128:Dynamic analysis tools include:
993:hardware random number generators
856:provides a different definition:
815:provides a different definition:
154:
3010:
3009:
2241:
2240:
1533:Sinclair, Matthew David (2017).
1181:
737:simultaneous access) are called
2481:Analysis of parallel algorithms
2023:Karpov, Andrey (6 April 2009).
1975:Alberto Sangiovanni-Vincentelli
1838:
1807:
1793:
1775:
1757:
1739:
1721:
1691:
1672:
1631:
1526:
1513:
1502:from the original on 2021-12-09
1479:
1448:"Chapter 17. Threads and Locks"
1100:North American Blackout of 2003
1002:
997:physically unclonable functions
354:Critical and non-critical forms
240:on one input and its negation,
3047:Distributed computing problems
3042:Concurrency (computer science)
2247:Category: Concurrent computing
1486:Adve, Sarita (December 1993).
1422:
1405:
1395:"Race Condition vs. Data Race"
1383:
1361:
1340:
1322:IEEE Transactions on Computers
1309:
1296:
429:
406:
179:fed with the following logic:
1:
3067:Timing in electronic circuits
2428:Simultaneous and heterogenous
2032:Microsoft Support description
1289:
1028:
3016:Category: Parallel computing
2037:Race Condition vs. Data Race
1279:Time of check to time of use
982:time-of-check-to-time-of-use
711:
285:
205:
7:
2208:Dining philosophers problem
1801:"Data race benchmark suite"
1703:"Tracking the blackout bug"
1560:Internet Systems Consortium
1232:
854:Java Language Specification
371:non-critical race condition
10:
3083:
3037:Computer security exploits
2323:High-performance computing
2097:Concurrent data structures
1931:10.1109/ARVLSI.1995.515611
847:synchronization operations
484:
411:Design techniques such as
18:
3057:Logic in computer science
3005:
2957:Automatic parallelization
2949:
2811:
2651:
2601:
2593:Application checkpointing
2555:
2519:
2463:
2407:
2356:
2295:
2236:
2213:Producerâconsumer problem
2198:Cigarette smokers problem
2185:
2127:
2079:
1316:Unger, S.H. (June 1995).
147:software programs. Using
1105:
1084:energy management system
397:essential race condition
2972:Embarrassingly parallel
2967:Deterministic algorithm
2228:Sleeping barber problem
2223:Readersâwriters problem
1371:. ISO. 2 September 2011
1125:, supporting PThreads.
1082:Another example is the
876:sequentially consistent
819:"two memory operations
360:critical race condition
101:is the condition of an
2687:Associative processing
2643:Non-blocking algorithm
2449:Clustered multi-thread
2102:Concurrent hash tables
1648:10.1109/synasc.2008.36
978:security vulnerability
911:
903:
863:
833:
802:
782:potentially concurrent
390:dynamic race condition
340:
320:
300:
257:
256:{\displaystyle \neg A}
234:
214:
90:
2803:Hardware acceleration
2716:Superscalar processor
2706:Dataflow architecture
2303:Distributed computing
2004:Avoid Race Conditions
1218:UK railway signalling
1070:life-critical systems
1064:Life-critical systems
931:Processor Consistency
907:
884:
858:
817:
778:
383:static race condition
341:
321:
301:
258:
235:
215:
29:
2682:Pipelined processing
2631:Explicit parallelism
2626:Implicit parallelism
2616:Dataflow programming
2073:Concurrent computing
1995:on February 1, 2009.
1783:"Data Race Detector"
1642:. pp. 439â444.
1399:Embedded in Academia
1369:"ISO/IEC 14882:2011"
1058:non-blocking sockets
972:. When this kind of
955:privilege escalation
330:
310:
271:
244:
224:
183:
21:Critical race theory
2906:Parallel Extensions
2711:Pipelined processor
2092:Concurrency control
1851:Nature Neuroscience
1302:Huffman, David A. "
1244:Concurrency control
1146:-based) or source,
1022:Mars Rover "Spirit"
935:Release Consistency
923:Release Consistency
2780:Massively parallel
2758:distributed shared
2578:Cache invalidation
2542:Instruction window
2333:Manycore processor
2313:Massively parallel
2308:Parallel computing
2289:Parallel computing
2009:2014-03-09 at the
1986:IBM developerWorks
1959:2021-06-10 at the
1925:. pp. 59â75.
1193:. You can help by
1068:Software flaws in
988:) bug is created.
467:undefined behavior
448:mutually exclusive
336:
316:
296:
253:
230:
210:
91:
52:propagation delays
3024:
3023:
2977:Parallel slowdown
2611:Stream processing
2501:KarpâFlatt metric
2255:
2254:
1971:Robert K. Brayton
1940:978-0-8186-7047-3
1657:978-0-7695-3523-4
1334:10.1109/12.391185
1264:Racetrack problem
1211:
1210:
1077:radiation therapy
951:denial of service
947:computer security
941:Computer security
927:Total Store Order
723:atomic operations
705:
704:
594:
593:
444:critical sections
424:metastable states
339:{\displaystyle A}
319:{\displaystyle A}
288:
233:{\displaystyle A}
208:
189:
3074:
3013:
3012:
2987:Software lockout
2786:Computer cluster
2721:Vector processor
2676:Array processing
2661:Flynn's taxonomy
2568:Memory coherence
2343:Computer network
2282:
2275:
2268:
2259:
2258:
2244:
2243:
2186:Classic problems
2162:Ambient calculus
2109:Concurrent users
2066:
2059:
2052:
2043:
2042:
2028:
1996:
1994:
1988:. Archived from
1952:
1917:
1914:10.1109/32.57622
1885:
1884:
1874:
1842:
1836:
1835:
1833:
1832:
1811:
1805:
1804:
1797:
1791:
1790:
1779:
1773:
1772:
1761:
1755:
1754:
1743:
1737:
1736:
1725:
1719:
1718:
1716:
1715:
1695:
1689:
1688:
1676:
1670:
1669:
1635:
1629:
1628:
1626:
1624:
1610:
1604:
1603:
1601:
1599:
1585:
1576:
1575:
1573:
1571:
1562:. Archived from
1552:
1546:
1545:
1539:
1530:
1524:
1517:
1511:
1510:
1508:
1507:
1501:
1494:
1483:
1477:
1476:
1474:
1465:
1456:
1455:
1444:
1433:
1426:
1420:
1419:
1417:
1409:
1403:
1402:
1387:
1381:
1380:
1378:
1376:
1365:
1359:
1358:
1356:
1355:
1344:
1338:
1337:
1313:
1307:
1300:
1206:
1203:
1185:
1178:
1116:dynamic analysis
1096:FirstEnergy Corp
780:Two actions are
603:
602:
492:
491:
474:nondeterministic
417:logic redundancy
366:will end up in.
345:
343:
342:
337:
325:
323:
322:
317:
305:
303:
302:
297:
289:
281:
265:Boolean negation
262:
260:
259:
254:
239:
237:
236:
231:
219:
217:
216:
211:
209:
201:
190:
187:
149:mutual exclusion
130:David A. Huffman
88:
57:
49:
39:
3082:
3081:
3077:
3076:
3075:
3073:
3072:
3071:
3027:
3026:
3025:
3020:
3001:
2945:
2851:Coarray Fortran
2807:
2791:Beowulf cluster
2647:
2597:
2588:Synchronization
2573:Cache coherence
2563:Multiprocessing
2551:
2515:
2496:Cost efficiency
2491:Gustafson's law
2459:
2403:
2352:
2328:Multiprocessing
2318:Cloud computing
2291:
2286:
2256:
2251:
2232:
2181:
2129:Process calculi
2123:
2119:Linearizability
2075:
2070:
2011:Wayback Machine
1992:
1961:Wayback Machine
1941:
1894:
1889:
1888:
1863:10.1038/nn.3456
1843:
1839:
1830:
1828:
1813:
1812:
1808:
1799:
1798:
1794:
1781:
1780:
1776:
1763:
1762:
1758:
1745:
1744:
1740:
1727:
1726:
1722:
1713:
1711:
1696:
1692:
1677:
1673:
1658:
1636:
1632:
1622:
1620:
1612:
1611:
1607:
1597:
1595:
1587:
1586:
1579:
1569:
1567:
1554:
1553:
1549:
1537:
1531:
1527:
1518:
1514:
1505:
1503:
1499:
1492:
1484:
1480:
1472:
1466:
1459:
1452:docs.oracle.com
1446:
1445:
1436:
1427:
1423:
1415:
1411:
1410:
1406:
1388:
1384:
1374:
1372:
1367:
1366:
1362:
1353:
1351:
1346:
1345:
1341:
1314:
1310:
1301:
1297:
1292:
1259:Linearizability
1235:
1207:
1201:
1198:
1191:needs expansion
1176:
1133:Intel Inspector
1112:static analysis
1108:
1066:
1046:shared resource
1031:
1005:
943:
872:
767:
755:synchronization
743:synchronization
714:
487:
432:
409:
379:
356:
331:
328:
327:
311:
308:
307:
280:
272:
269:
268:
245:
242:
241:
225:
222:
221:
220:A logic signal
200:
186:
184:
181:
180:
157:
87:
80:
73:
66:
59:
55:
48:
41:
38:
31:
24:
17:
12:
11:
5:
3080:
3070:
3069:
3064:
3059:
3054:
3049:
3044:
3039:
3022:
3021:
3019:
3018:
3006:
3003:
3002:
3000:
2999:
2994:
2989:
2984:
2982:Race condition
2979:
2974:
2969:
2964:
2959:
2953:
2951:
2947:
2946:
2944:
2943:
2938:
2933:
2928:
2923:
2918:
2913:
2908:
2903:
2898:
2893:
2888:
2883:
2878:
2873:
2868:
2863:
2858:
2853:
2848:
2843:
2838:
2833:
2828:
2823:
2817:
2815:
2809:
2808:
2806:
2805:
2800:
2795:
2794:
2793:
2783:
2777:
2776:
2775:
2770:
2765:
2760:
2755:
2750:
2740:
2739:
2738:
2733:
2726:Multiprocessor
2723:
2718:
2713:
2708:
2703:
2702:
2701:
2696:
2691:
2690:
2689:
2684:
2679:
2668:
2657:
2655:
2649:
2648:
2646:
2645:
2640:
2639:
2638:
2633:
2628:
2618:
2613:
2607:
2605:
2599:
2598:
2596:
2595:
2590:
2585:
2580:
2575:
2570:
2565:
2559:
2557:
2553:
2552:
2550:
2549:
2544:
2539:
2534:
2529:
2523:
2521:
2517:
2516:
2514:
2513:
2508:
2503:
2498:
2493:
2488:
2483:
2478:
2473:
2467:
2465:
2461:
2460:
2458:
2457:
2455:Hardware scout
2452:
2446:
2441:
2436:
2430:
2425:
2419:
2413:
2411:
2409:Multithreading
2405:
2404:
2402:
2401:
2396:
2391:
2386:
2381:
2376:
2371:
2366:
2360:
2358:
2354:
2353:
2351:
2350:
2348:Systolic array
2345:
2340:
2335:
2330:
2325:
2320:
2315:
2310:
2305:
2299:
2297:
2293:
2292:
2285:
2284:
2277:
2270:
2262:
2253:
2252:
2250:
2249:
2237:
2234:
2233:
2231:
2230:
2225:
2220:
2218:Race condition
2215:
2210:
2205:
2200:
2195:
2189:
2187:
2183:
2182:
2180:
2179:
2174:
2169:
2164:
2159:
2154:
2149:
2144:
2139:
2133:
2131:
2125:
2124:
2122:
2121:
2116:
2111:
2106:
2105:
2104:
2094:
2089:
2083:
2081:
2077:
2076:
2069:
2068:
2061:
2054:
2046:
2040:
2039:
2034:
2029:
2020:
2014:
2000:
1977:
1963:
1939:
1918:
1908:(8): 829â843.
1893:
1892:External links
1890:
1887:
1886:
1857:(8): 1118â24.
1837:
1806:
1792:
1774:
1756:
1751:clang.llvm.org
1738:
1733:clang.llvm.org
1720:
1701:(2004-04-07).
1699:Poulsen, Kevin
1690:
1687:on 2017-12-15.
1671:
1656:
1630:
1605:
1577:
1566:on 9 June 2016
1547:
1525:
1512:
1495:(PhD thesis).
1478:
1457:
1434:
1421:
1404:
1393:(2011-03-13).
1382:
1360:
1339:
1328:(6): 754â768.
1308:
1294:
1293:
1291:
1288:
1287:
1286:
1281:
1276:
1271:
1266:
1261:
1256:
1254:Hazard (logic)
1251:
1246:
1241:
1239:Call collision
1234:
1231:
1209:
1208:
1188:
1186:
1175:
1174:In other areas
1172:
1171:
1170:
1159:
1158:
1155:
1140:
1107:
1104:
1065:
1062:
1030:
1027:
1004:
1001:
962:authentication
942:
939:
871:
868:
840:happens-before
793:
792:
789:
766:
763:
719:nondeterminism
713:
710:
703:
702:
699:
696:
693:
690:
689:
686:
683:
681:
677:
676:
673:
671:
670:increase value
668:
665:
664:
661:
659:
657:
656:increase value
653:
652:
649:
646:
643:
640:
639:
636:
633:
631:
627:
626:
623:
621:
619:
616:
615:
614:Integer value
612:
610:
607:
592:
591:
588:
585:
582:
579:
578:
575:
573:
572:increase value
570:
567:
566:
563:
560:
557:
554:
553:
550:
547:
545:
541:
540:
537:
535:
533:
532:increase value
529:
528:
525:
522:
520:
516:
515:
512:
510:
508:
505:
504:
503:Integer value
501:
499:
496:
486:
483:
431:
428:
408:
405:
378:
375:
355:
352:
335:
315:
295:
292:
287:
284:
279:
276:
252:
249:
229:
207:
204:
199:
196:
193:
156:
155:In electronics
153:
137:logic circuits
126:race condition
95:race condition
85:
78:
71:
64:
50:represent the
46:
36:
15:
9:
6:
4:
3:
2:
3079:
3068:
3065:
3063:
3062:Software bugs
3060:
3058:
3055:
3053:
3050:
3048:
3045:
3043:
3040:
3038:
3035:
3034:
3032:
3017:
3008:
3007:
3004:
2998:
2995:
2993:
2990:
2988:
2985:
2983:
2980:
2978:
2975:
2973:
2970:
2968:
2965:
2963:
2960:
2958:
2955:
2954:
2952:
2948:
2942:
2939:
2937:
2934:
2932:
2929:
2927:
2924:
2922:
2919:
2917:
2914:
2912:
2909:
2907:
2904:
2902:
2899:
2897:
2894:
2892:
2889:
2887:
2884:
2882:
2879:
2877:
2874:
2872:
2871:Global Arrays
2869:
2867:
2864:
2862:
2859:
2857:
2854:
2852:
2849:
2847:
2844:
2842:
2839:
2837:
2834:
2832:
2829:
2827:
2824:
2822:
2819:
2818:
2816:
2814:
2810:
2804:
2801:
2799:
2798:Grid computer
2796:
2792:
2789:
2788:
2787:
2784:
2781:
2778:
2774:
2771:
2769:
2766:
2764:
2761:
2759:
2756:
2754:
2751:
2749:
2746:
2745:
2744:
2741:
2737:
2734:
2732:
2729:
2728:
2727:
2724:
2722:
2719:
2717:
2714:
2712:
2709:
2707:
2704:
2700:
2697:
2695:
2692:
2688:
2685:
2683:
2680:
2677:
2674:
2673:
2672:
2669:
2667:
2664:
2663:
2662:
2659:
2658:
2656:
2654:
2650:
2644:
2641:
2637:
2634:
2632:
2629:
2627:
2624:
2623:
2622:
2619:
2617:
2614:
2612:
2609:
2608:
2606:
2604:
2600:
2594:
2591:
2589:
2586:
2584:
2581:
2579:
2576:
2574:
2571:
2569:
2566:
2564:
2561:
2560:
2558:
2554:
2548:
2545:
2543:
2540:
2538:
2535:
2533:
2530:
2528:
2525:
2524:
2522:
2518:
2512:
2509:
2507:
2504:
2502:
2499:
2497:
2494:
2492:
2489:
2487:
2484:
2482:
2479:
2477:
2474:
2472:
2469:
2468:
2466:
2462:
2456:
2453:
2450:
2447:
2445:
2442:
2440:
2437:
2434:
2431:
2429:
2426:
2423:
2420:
2418:
2415:
2414:
2412:
2410:
2406:
2400:
2397:
2395:
2392:
2390:
2387:
2385:
2382:
2380:
2377:
2375:
2372:
2370:
2367:
2365:
2362:
2361:
2359:
2355:
2349:
2346:
2344:
2341:
2339:
2336:
2334:
2331:
2329:
2326:
2324:
2321:
2319:
2316:
2314:
2311:
2309:
2306:
2304:
2301:
2300:
2298:
2294:
2290:
2283:
2278:
2276:
2271:
2269:
2264:
2263:
2260:
2248:
2239:
2238:
2235:
2229:
2226:
2224:
2221:
2219:
2216:
2214:
2211:
2209:
2206:
2204:
2201:
2199:
2196:
2194:
2191:
2190:
2188:
2184:
2178:
2177:Join-calculus
2175:
2173:
2170:
2168:
2165:
2163:
2160:
2158:
2155:
2153:
2150:
2148:
2145:
2143:
2140:
2138:
2135:
2134:
2132:
2130:
2126:
2120:
2117:
2115:
2114:Indeterminacy
2112:
2110:
2107:
2103:
2100:
2099:
2098:
2095:
2093:
2090:
2088:
2085:
2084:
2082:
2078:
2074:
2067:
2062:
2060:
2055:
2053:
2048:
2047:
2044:
2038:
2035:
2033:
2030:
2026:
2021:
2018:
2015:
2012:
2008:
2005:
2001:
1999:
1991:
1987:
1983:
1978:
1976:
1972:
1968:
1964:
1962:
1958:
1955:
1950:
1946:
1942:
1936:
1932:
1928:
1924:
1919:
1915:
1911:
1907:
1903:
1902:
1896:
1895:
1882:
1878:
1873:
1868:
1864:
1860:
1856:
1852:
1848:
1841:
1827:on 2013-08-06
1826:
1822:
1821:
1816:
1810:
1802:
1796:
1788:
1784:
1778:
1770:
1766:
1760:
1752:
1748:
1742:
1734:
1730:
1724:
1710:
1709:
1708:SecurityFocus
1704:
1700:
1694:
1686:
1682:
1675:
1667:
1663:
1659:
1653:
1649:
1645:
1641:
1634:
1619:
1615:
1609:
1594:
1590:
1584:
1582:
1565:
1561:
1557:
1551:
1543:
1536:
1529:
1522:
1516:
1498:
1491:
1490:
1482:
1471:
1464:
1462:
1453:
1449:
1443:
1441:
1439:
1431:
1425:
1418:. 2014-11-19.
1414:
1408:
1400:
1396:
1392:
1386:
1370:
1364:
1349:
1343:
1335:
1331:
1327:
1323:
1319:
1312:
1305:
1299:
1295:
1285:
1282:
1280:
1277:
1275:
1272:
1270:
1267:
1265:
1262:
1260:
1257:
1255:
1252:
1250:
1247:
1245:
1242:
1240:
1237:
1236:
1230:
1227:
1223:
1219:
1214:
1205:
1196:
1192:
1189:This section
1187:
1184:
1180:
1179:
1168:
1164:
1163:
1162:
1156:
1153:
1149:
1145:
1141:
1138:
1137:Intel Advisor
1134:
1131:
1130:
1129:
1126:
1124:
1119:
1117:
1113:
1103:
1101:
1097:
1093:
1089:
1085:
1080:
1078:
1075:
1071:
1061:
1059:
1054:
1051:
1047:
1042:
1040:
1036:
1026:
1023:
1017:
1014:
1010:
1000:
998:
994:
989:
987:
983:
979:
975:
971:
967:
966:time of check
963:
958:
956:
952:
948:
938:
936:
933:), and RCpc (
932:
928:
924:
919:
915:
910:
906:
902:
901:
896:
895:
890:
887:
883:
880:
877:
867:
862:
857:
855:
850:
848:
843:
841:
836:
832:
830:
826:
822:
816:
814:
809:
807:
801:
798:
790:
787:
786:
785:
783:
777:
775:
770:
762:
760:
756:
752:
748:
744:
740:
734:
732:
726:
724:
720:
709:
700:
697:
694:
692:
691:
687:
684:
682:
679:
678:
674:
672:
669:
667:
666:
662:
660:
658:
655:
654:
650:
647:
644:
642:
641:
637:
634:
632:
629:
628:
624:
622:
620:
618:
617:
613:
611:
608:
605:
604:
601:
599:
589:
586:
583:
581:
580:
576:
574:
571:
569:
568:
564:
561:
558:
556:
555:
551:
548:
546:
543:
542:
538:
536:
534:
531:
530:
526:
523:
521:
518:
517:
513:
511:
509:
507:
506:
502:
500:
497:
494:
493:
490:
482:
480:
475:
470:
468:
464:
460:
456:
455:memory models
451:
449:
446:that must be
445:
441:
440:software bugs
436:
427:
425:
420:
418:
414:
413:Karnaugh maps
404:
402:
398:
393:
391:
386:
384:
374:
372:
367:
365:
364:state machine
361:
351:
347:
333:
313:
293:
290:
282:
277:
274:
266:
250:
227:
202:
197:
194:
191:
178:
173:
171:
167:
162:
152:
150:
146:
142:
141:multithreaded
138:
133:
131:
127:
122:
120:
116:
112:
108:
104:
100:
96:
84:
77:
70:
63:
53:
45:
35:
28:
22:
2981:
2556:Coordination
2486:Amdahl's law
2422:Simultaneous
2217:
2167:API-Calculus
1990:the original
1985:
1922:
1905:
1899:
1854:
1850:
1840:
1829:. Retrieved
1825:the original
1820:Neuroskeptic
1818:
1809:
1795:
1786:
1777:
1768:
1759:
1750:
1741:
1732:
1723:
1712:. Retrieved
1706:
1693:
1685:the original
1674:
1639:
1633:
1621:. Retrieved
1608:
1596:. Retrieved
1568:. Retrieved
1564:the original
1550:
1541:
1528:
1515:
1504:. Retrieved
1488:
1481:
1451:
1424:
1407:
1398:
1391:Regehr, John
1385:
1373:. Retrieved
1363:
1352:. Retrieved
1342:
1325:
1321:
1311:
1298:
1284:Test-and-set
1269:Symlink race
1215:
1212:
1202:October 2016
1199:
1195:adding to it
1190:
1160:
1127:
1120:
1109:
1090:and used by
1086:provided by
1081:
1067:
1055:
1043:
1032:
1018:
1009:File locking
1006:
1003:File systems
990:
985:
969:
965:
959:
944:
929:), PSO, PC (
920:
916:
912:
908:
904:
898:
897:
892:
891:
888:
885:
881:
873:
864:
859:
853:
851:
844:
837:
834:
828:
820:
818:
812:
810:
805:
803:
796:
794:
781:
779:
774:C++ standard
773:
771:
768:
758:
754:
750:
746:
742:
738:
735:
727:
715:
706:
595:
488:
471:
452:
437:
433:
421:
410:
396:
394:
389:
387:
382:
380:
370:
368:
359:
357:
348:
263:(the ÂŹ is a
174:
170:clock signal
158:
134:
125:
123:
98:
94:
92:
82:
75:
68:
61:
43:
33:
3052:Logic gates
2992:Scalability
2753:distributed
2636:Concurrency
2603:Programming
2444:Cooperative
2433:Speculative
2369:Instruction
2193:ABA problem
2087:Concurrency
1375:3 September
970:time of use
430:In software
407:Workarounds
145:distributed
109:, or other
103:electronics
99:race hazard
3031:Categories
2997:Starvation
2736:asymmetric
2471:PRAM model
2439:Preemptive
2157:Ď-calculus
1831:2013-08-07
1714:2011-09-19
1506:2021-12-09
1354:2018-01-30
1290:References
1114:tools and
1029:Networking
811:The paper
731:torn write
695:write back
680:write back
645:read value
630:read value
598:semaphores
584:write back
559:read value
544:write back
519:read value
401:delay line
161:logic gate
2731:symmetric
2476:PEM model
2002:Chapter "
1350:. Iso.org
1306:" (1954).
1088:GE Energy
1074:Therac-25
980:called a
829:data race
806:data race
797:data race
712:Data race
479:Heisenbug
291:≠
286:¯
278:∧
248:¬
206:¯
198:∧
124:The term
115:dependent
2962:Deadlock
2950:Problems
2916:pthreads
2896:OpenHMPP
2821:Ateji PX
2782:computer
2653:Hardware
2520:Elements
2506:Slowdown
2417:Temporal
2399:Pipeline
2203:Deadlock
2007:Archived
1957:Archived
1881:23852117
1769:Valgrind
1618:lighttpd
1497:Archived
1249:Deadlock
1233:See also
1152:Valgrind
1144:Valgrind
968:and the
821:conflict
609:Thread 2
606:Thread 1
498:Thread 2
495:Thread 1
177:AND gate
166:glitches
107:software
2921:RaftLib
2901:OpenACC
2876:GPUOpen
2866:C++ AMP
2841:Charm++
2583:Barrier
2527:Process
2511:Speedup
2296:General
2080:General
1998:Alt URL
1965:Paper "
1949:4435912
1872:3733500
1666:1586029
1226:Winwick
1222:Rule 55
1118:tools.
1094:-based
1050:latency
986:TOCTTOU
485:Example
3014:
2891:OpenCL
2886:OpenMP
2831:Chapel
2748:shared
2743:Memory
2678:(SIMT)
2621:Models
2532:Thread
2464:Theory
2435:(SpMT)
2389:Memory
2374:Thread
2357:Levels
2245:
1973:, and
1954:as PDF
1947:
1937:
1879:
1869:
1787:Golang
1664:
1654:
1623:5 June
1598:5 June
1570:5 June
1167:OpenMP
1039:solved
1013:daemon
739:atomic
188:output
111:system
2861:Dryad
2826:Boost
2547:Array
2537:Fiber
2451:(CMT)
2424:(SMT)
2338:GPGPU
2152:LOTOS
1993:(PDF)
1945:S2CID
1662:S2CID
1538:(PDF)
1500:(PDF)
1493:(PDF)
1473:(PDF)
1416:(PDF)
1123:Clang
1106:Tools
463:C++11
74:) â â
2926:ROCm
2856:CUDA
2846:Cilk
2813:APIs
2773:COMA
2768:NUMA
2699:MIMD
2694:MISD
2671:SIMD
2666:SISD
2394:Loop
2384:Data
2379:Task
2172:PEPA
1935:ISBN
1877:PMID
1652:ISBN
1625:2017
1600:2017
1593:CPAN
1572:2017
1377:2011
1148:LLVM
1092:Ohio
995:and
953:and
852:The
772:The
759:data
751:data
747:data
461:and
40:and
2941:ZPL
2936:TBB
2931:UPC
2911:PVM
2881:MPI
2836:HPX
2763:UMA
2364:Bit
2147:ACP
2142:CCS
2137:CSP
1927:doi
1910:doi
1867:PMC
1859:doi
1644:doi
1330:doi
1216:In
1197:.
1035:IRC
974:bug
825:iff
784:if
741:or
459:C11
395:An
143:or
139:or
119:bug
97:or
81:= â
67:+ â
3033::
1984:.
1943:.
1933:.
1906:16
1904:.
1875:.
1865:.
1855:16
1853:.
1849:.
1817:.
1785:.
1767:.
1749:.
1731:.
1705:.
1660:.
1650:.
1616:.
1591:.
1580:^
1558:.
1540:.
1460:^
1450:.
1437:^
1397:.
1326:44
1324:.
1320:.
957:.
808:.
725:.
701:1
688:1
675:0
663:0
651:0
638:0
625:0
590:2
577:1
565:1
552:1
539:0
527:0
514:0
469:.
388:A
381:A
369:A
358:A
105:,
93:A
60:(â
2281:e
2274:t
2267:v
2065:e
2058:t
2051:v
2027:.
1951:.
1929::
1916:.
1912::
1883:.
1861::
1834:.
1789:.
1771:.
1753:.
1735:.
1717:.
1668:.
1646::
1627:.
1602:.
1574:.
1509:.
1475:.
1454:.
1401:.
1379:.
1357:.
1336:.
1332::
1204:)
1200:(
1169:.
984:(
698:â
685:â
648:â
635:â
587:â
562:â
549:â
524:â
477:"
334:A
314:A
294:1
283:A
275:A
251:A
228:A
203:A
195:A
192:=
89:.
86:1
83:t
79:2
76:t
72:2
69:t
65:1
62:t
56:A
47:2
44:t
42:â
37:1
34:t
32:â
23:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.