Knowledge (XXG)

Concurrent computing

Source đź“ť

981:). The exchange of messages may be carried out asynchronously, or may use a synchronous "rendezvous" style in which the sender blocks until the message is received. Asynchronous message passing may be reliable or unreliable (sometimes referred to as "send and pray"). Message-passing concurrency tends to be far easier to reason about than shared-memory concurrency, and is typically considered a more robust form of concurrent programming. A wide variety of mathematical theories to understand and analyze message-passing systems are available, including the 864: 2613: 669: 271: 47: 329: 230: 2397: 1014:, from the 19th and early 20th century, and some terms date to this period, such as semaphores. These arose to address the question of how to handle multiple trains on the same railroad system (avoiding collisions and maximizing efficiency) and how to handle multiple transmissions over a given set of wires (improving efficiency), such as via 1001:
Shared memory and message passing concurrency have different performance characteristics. Typically (although not always), the per-process memory overhead and task switching overhead is lower in a message passing system, but the overhead of message passing is greater than for a procedure call. These
844:
model. Sequential consistency is the property of a program that its execution produces the same results as a sequential program. Specifically, a program is sequentially consistent if "the results of any execution is the same as if the operations of all the processors were executed in some sequential
427:
overlapping, but execution need not happen at the same instant. The goal here is to model processes in the outside world that happen concurrently, such as multiple clients accessing a server at the same time. Structuring software systems as composed of multiple concurrent, communicating parts can be
651:, and execution will proceed to subtracting the withdrawal amount. However, since both processes perform their withdrawals, the total amount withdrawn will end up being more than the original balance. These sorts of problems with shared resources benefit from the use of concurrency control, or 439:, another process begins or resumes, and then later the original process is resumed. In this way, multiple processes are part-way through execution at a single instant, but only one process is being executed at that instant. 739:
High responsiveness for input/output—input/output-intensive programs mostly wait for input or output operations to complete. Concurrent programming allows the time that would be spent waiting to be used for another
522:: ensuring the correct sequencing of the interactions or communications between different computational executions, and coordinating access to resources that are shared among executions. Potential problems include 495:
are used as opposing pairs. A schedule in which tasks execute one at a time (serially, no parallelism), without interleaving (sequentially, no concurrency: no task begins until the prior task ends) is called a
2744: 1669:—general purpose functional, main design objectives are ease of programming, code clarity-readability, and automatic parallelization for performance on multicore hardware, and provably free of 733:
Increased program throughput—parallel execution of a concurrent program allows the number of tasks completed in a given time to increase proportionally to the number of processors according to
3491: 2650: 2714: 1162:(although message-passing models can and have been implemented on top of the underlying shared-memory model). Of the languages that use a message-passing concurrency model, 2663: 1425: 2813: 2434: 2748: 3484: 1416:—functional, concurrent, for bounded space and time environments where automata processes are described by synchronous channels patterns and message passing 423:) single processor, as only one computation can occur at any instant (during any single clock cycle). By contrast, concurrent computing consists of process 2522: 1185:
have seen industrial use at various times in the last 20 years. A non-exhaustive list of languages which use or provide concurrent programming facilities:
2643: 922: 2877: 2355: 1108: 3477: 3227: 3089: 2484: 3584: 3574: 3233: 3632: 3589: 3579: 3569: 2636: 2379: 2344: 2305: 1970: 1860: 690: 288: 243: 64: 2292: 3655: 3546: 3418: 3166: 2214: 1323: 743:
More appropriate program structure—some problems and problem domains are well-suited to representation as concurrent tasks or processes.
1801:
This is discounting parallelism internal to a processor core, such as pipelining or vectorized instructions. A one-core, one-processor
2886: 2517: 2507: 2427: 2281: 1731: 1576: 1507: 1402: 769: 2512: 2100: 1942: 910:
In some concurrent computing systems, communication between the concurrent components is hidden from the programmer (e.g., by using
894:
A number of different methods can be used to implement concurrent programs, such as implementing each computational execution as an
765: 716: 390: 372: 310: 257: 130: 339: 111: 2095:
Marlow, Simon (2013) Parallel and Concurrent Programming in Haskell : Techniques for Multicore and Multithreaded Programming
1037:
Concurrency is pervasive in computing, occurring from low-level hardware on a single chip to worldwide networks. Examples follow.
3561: 3258: 2938: 2882: 2401: 1738:
Many other languages provide support for concurrency in the form of libraries, at levels roughly comparable with the above list.
195: 83: 3541: 3118: 2991: 2922: 2857: 2780: 2160: 1612: 1463: 534:. For example, consider the following algorithm to make withdrawals from a checking account represented by the shared resource 31: 3621: 3536: 3296: 3059: 2689: 2457: 1279: 1251: 1155: 1132: 1112: 930: 694: 292: 156: 68: 35: 2583: 90: 1998:
Lamport, Leslie (1 September 1979). "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs".
487:
The word "sequential" is used as an antonym for both "concurrent" and "parallel"; when these are explicitly distinguished,
3650: 3551: 3074: 3064: 2842: 2617: 2420: 1704: 1633: 1545: 1364: 1358: 1348: 1174: 1163: 974: 800: 3458: 3438: 3368: 3311: 3273: 3263: 3223: 3148: 3084: 3054: 2981: 2970: 2867: 2847: 2822: 2785: 1698: 1689: 1660: 1586: 1572: 1522: 1519:—graphical, dataflow, functions are nodes in a graph, data is wires between the nodes; includes object-oriented language 1499: 1493: 1445: 1407: 1370: 1314: 1204: 1182: 1178: 978: 970: 2593: 2111: 1657:—for system programming, using message-passing with move semantics, shared immutable memory, and shared mutable memory. 1100:
At the network level, networked systems are generally concurrent by their nature, as they consist of separate devices.
845:
order, and the operations of each individual processor appear in this sequence in the order specified by its program".
3413: 3176: 3143: 3038: 3014: 2976: 2956: 2852: 2761: 2739: 2724: 2578: 2573: 1654: 1639: 1627: 1618: 1567: 1526: 1487: 1439: 1413: 1326: 1265: 1227: 1218: 1195: 1170: 1151: 1124: 926: 527: 431:
For example, concurrent processes can be executed on one core by interleaving the execution steps of each process via
97: 679: 354: 3610: 3360: 3346: 3253: 3213: 3138: 3044: 3024: 2891: 2770: 2704: 1645: 1597: 1530: 1189: 1015: 895: 804: 698: 683: 350: 281: 57: 3453: 3218: 3128: 3108: 3094: 2568: 2467: 2241: 1723: 1606: 1419: 1398: 1159: 1116: 990: 966: 942: 899: 786: 249: 79: 3433: 3393: 3336: 3268: 3006: 2837: 1336: 1319: 1287:(CnC)—Achieves implicit parallelism independent of memory model by explicitly defining flow of data and control 1269: 1068: 756:
were an early attempt to codify the rules of concurrent execution. Dataflow theory later built upon these, and
2407: 446:
be executed in parallel, for example, by assigning each process to a separate processor or processor core, or
198:
into subcomputations that may be executed concurrently. Pioneers in the field of concurrent computing include
3443: 3423: 3364: 3351: 3331: 3158: 2895: 2799: 2757: 2598: 1254:—supports concurrent computing using lock, yield, also since version 5.0 async and await keywords introduced 1072: 938: 412: 3403: 3378: 3372: 3316: 3278: 2966: 2961: 2913: 2808: 2709: 2681: 2672: 1782: 1777: 1757: 1663:—general purpose, designed to express common programming patterns in a concise, elegant, and type-safe way 1284: 1261: 914:), while in others it must be handled explicitly. Explicit communication can be divided into two classes: 841: 779: 652: 454: 1230:—domain specific, concurrent, based on actor model and .NET Common Language Runtime using a C-like syntax 772:(CSP) were developed to permit algebraic reasoning about systems composed of interacting components. The 3305: 3301: 3243: 3195: 2765: 2472: 1199: 1158:. Both of these languages fundamentally use a shared-memory concurrency model, with locking provided by 1120: 1064: 1044: 830: 757: 447: 1150:
Today, the most commonly used programming languages that have specific constructs for concurrency are
3529: 3500: 3448: 3428: 3388: 3049: 2918: 2905: 2659: 1459: 1136: 1054: 911: 420: 191: 403:
The concept of concurrent computing is frequently confused with the related but distinct concept of
3383: 3321: 3133: 3113: 3099: 2831: 2699: 2694: 2462: 2180: 1089: 531: 519: 507: 187: 435:
slices: only one process runs at a time, and if it does not complete during its time slice, it is
411:". In parallel computing, execution occurs at the same physical instant: for example, on separate 104: 3200: 3153: 3123: 3069: 2928: 2827: 2719: 2628: 2311: 2260: 2232: 2057: 2015: 1866: 1762: 1290: 1094: 849: 794: 404: 219: 2336: 2330: 2209:. The Morgan Kaufmann Series in Computer Architecture and Design (5 ed.). Morgan Kaufmann. 1554:—for system programming, by N. Wirth as a successor to Pascal with native support for coroutines 760:
were created to physically implement the ideas of dataflow theory. Beginning in the late 1970s,
734: 1560:—modern member of Algol family with extensive support for threads, mutexes, condition variables 945:) to coordinate between threads. A program that properly implements any of these is said to be 457:, and tasks need not always be executed concurrently. For example, given two tasks, T1 and T2: 183:
is one where a computation can advance without waiting for all other computations to complete.
3524: 3519: 3356: 3248: 3103: 3079: 3019: 2986: 2948: 2933: 2872: 2375: 2340: 2301: 2277: 2210: 2096: 1966: 1938: 1856: 1693: 1685: 1511: 1503: 1373:—real-time functional, for signal processing, compiler provides automatic parallelization via 1309: 1305: 826: 820: 203: 933:). This style of concurrent programming usually needs the use of some form of locking (e.g., 428:
useful for tackling complexity, regardless of whether the parts can be executed in parallel.
3238: 3170: 3034: 2775: 2532: 2499: 2250: 2007: 1848: 1747: 1535: 1352: 1275: 1081: 1026: 934: 176: 168: 2357:
A pragmatic, historically oriented survey on the universality of synchronization primitives
1842: 1198:—concurrent, with threads and message passing, for system programming in early versions of 1169:
Many concurrent programming languages have been developed more as research languages (e.g.
3288: 3162: 3028: 2729: 2489: 2479: 1767: 1388: 994: 986: 958: 829:(also known as a memory model). The consistency model defines rules for how operations on 761: 502: 419:
machine, with the goal of speeding up computations—parallel computing is impossible on a (
416: 199: 3340: 2996: 2862: 2588: 1931: 1911: 1772: 1670: 1601: 1192:—general purpose, with native support for message passing and monitor based concurrency 837: 523: 1538:—Amstrad variant of BASIC contains EVERY and AFTER commands for concurrent subroutines 863: 179:—where there is a separate execution point or "thread of control" for each process. A 17: 3644: 3326: 2547: 2527: 2147: 2084: 1622: 1590: 1477: 1296: 1222: 946: 808: 643:. If line 3 in both operations executes before line 5 both operations will find that 2264: 2112:
https://juliacon.talkfunnel.com/2015/21-concurrent-and-parallel-programming-in-julia
1870: 3514: 2537: 2019: 1077: 790: 432: 207: 2073: 1609:—multiparadigm, supports shared-state and message-passing concurrency, and futures 453:
The exact timing of when tasks in a concurrent system are executed depends on the
3469: 1361:—dynamic and functional meta-programming aware language running on the Erlang VM. 3208: 2563: 1806: 1701:—built-in support for writing asynchronous and parallel code in a structured way 1681: 1675: 1330: 1300: 1208: 982: 773: 668: 270: 151: 46: 1293:—lazy, pure functional language operating concurrent processes on shared memory 479:
T1 and T2 may be executed simultaneously at the same instant of time (parallel
2124: 1852: 1713:—for developing telecommunication exchanges, uses asynchronous message passing 1582: 1455: 1451: 1342: 1011: 2369: 2148:
Documentation Â» The Python Standard Library Â» Concurrent Execution
2033: 2011: 1752: 1666: 1563: 1541: 1483: 1049: 753: 147: 1894: 1025:
credited with being the first paper in this field, identifying and solving
797:, have also been developed to describe the behavior of concurrent systems. 2396: 2255: 2236: 1173:) rather than as languages for production use. However, languages such as 1886: 1557: 1551: 1214: 962: 825:
Concurrent programming languages and multiprocessor programs must have a
172: 2058:"Making reliable distributed systems in the presence of software errors" 2412: 1516: 1384: 1367:—uses synchronous or asynchronous message passing with no shared memory 1257: 1128: 1021:
The academic study of concurrent algorithms started in the 1960s, with
295: in this section. Unsourced material may be challenged and removed. 1401:—for system programming, with a concurrent programming model based on 1469: 1374: 2332:
Coordinated Computing: Tools and Techniques for Distributed Software
1010:
Concurrent computing developed out of earlier work on railroads and
357:. Statements consisting only of original research should be removed. 1566:—for research, with channels as first-class values; predecessor of 1248:(C omega)—for research, extends C#, uses asynchronous communication 1239: 1710: 1649: 1473: 1448:—"concurrent programming primitives: Tasks, async-wait, Channels." 1245: 1233: 407:, although both can be described as "multiple processes executing 2207:
Computer Organization and Design: The Hardware/Software Interface
1642:—uses asynchronous message passing between shared-nothing objects 2542: 1727: 1717: 1378: 1002:
differences are often overwhelmed by other performance factors.
3473: 2632: 2416: 1636:— uses thread-based parallelism and process-based parallelism 1630:
includes classes for threads, promises and channels by default
921:
Concurrent components communicate by altering the contents of
858: 662: 322: 264: 223: 40: 27:
Executing several computations during overlapping time periods
1898: 1615:—object-oriented, parallel, free of pointers, race conditions 776:
added the capability for reasoning about dynamic topologies.
1111:
are programming languages that use language constructs for
898:, or implementing the computational processes as a set of 2237:"Solution of a problem in concurrent programming control" 1436:
to logical variables, bag channels; is purely declarative
1410:—concurrent, and parallel functional programming language 1166:
is probably the most widely used in industry at present.
1726:—concurrency-extended subset of C language developed by 1472:—concurrent and distributed channel based, extension of 1831:
9th edition, Abraham Silberschatz. "Chapter 4: Threads"
875: 518:
The main challenge in designing concurrent programs is
346: 1621:—essentially an executable implementation of Milner's 2371:
Synchronization Algorithms and Concurrent Programming
1355:
mechanism based on the concepts of Design by Contract
989:. Message passing can be efficiently implemented via 2038:
ACM Symposium on Principles of Distributed Computing
1963:
Principles of Concurrent and Distributed Programming
3560: 3507: 3402: 3287: 3189: 3005: 2947: 2904: 2807: 2798: 2738: 2680: 2671: 2556: 2498: 2450: 1805:may be capable of some parallelism, such as with a 500:. A set of tasks that can be scheduled serially is 71:. Unsourced material may be challenged and removed. 2085:https://en.cppreference.com/w/cpp/header/coroutine 1930: 1329:with explicit support for concurrent programming ( 1985: 1889:(2012-01-11). "Concurrency is not Parallelism". 1600:—heavily concurrent, nondeterministic, based on 1496:—dataflow-based, communicates by message passing 729:The advantages of concurrent computing include: 2205:Patterson, David A.; Hennessy, John L. (2013). 2074:https://en.cppreference.com/w/cpp/header/thread 2329:Filman, Robert E.; Daniel P. Friedman (1984). 472:T1 and T2 may be executed alternately (serial 3485: 2644: 2428: 461:T1 may be executed and finished before T2 or 8: 2114:Concurrent and Parallel programming in Julia 1956: 1954: 1139:. Such languages are sometimes described as 164:with one completing before the next starts. 160:—during overlapping time periods—instead of 1104:Languages supporting concurrent programming 697:. Unsourced material may be challenged and 258:Learn how and when to remove these messages 3492: 3478: 3470: 2804: 2677: 2651: 2637: 2629: 2435: 2421: 2413: 1734:, built-in constructs for programmable I/O 1345:—uses promises for asynchronous operations 1211:, adds support for concurrency via futures 1145:concurrency-oriented programming languages 902:within a single operating system process. 2715:Programming in the large and in the small 2254: 1589:, which incorporates ideas from Milner's 717:Learn how and when to remove this message 391:Learn how and when to remove this message 373:Learn how and when to remove this message 311:Learn how and when to remove this message 167:This is a property of a system—whether a 131:Learn how and when to remove this message 34:. For a more theoretical discussion, see 2374:. Pearson / Prentice Hall. p. 433. 1022: 836:One of the first consistency models was 1895:http://talks.golang.org/2012/waza.slide 1821: 1794: 1548:variant extended to support parallelism 1242:—thread and coroutine support libraries 1221:with parallel primitives inspired from 1084:of jobs with concurrent use of a system 514:Coordinating access to shared resources 30:For the American computer company, see 1882: 1880: 2274:The Art of Multiprocessor Programming 1716:VHSIC Hardware Description Language ( 957:Concurrent components communicate by 811:and applies them to memory accesses. 7: 2034:"PODC Influential Paper Award: 2002" 1844:The Origin of Concurrent Programming 1684:—concurrent, for teaching, built on 1339:—uses promises to preclude deadlocks 1278:—functional programming, similar to 833:occur and how results are produced. 695:adding citations to reliable sources 293:adding citations to reliable sources 69:adding citations to reliable sources 1442:—thread class or Runnable interface 1040:At the programming language level: 2408:Concurrent Systems Virtual Library 1893:, 11 January 2012. Retrieved from 1732:communicating sequential processes 1648:—for system programming, based on 1577:communicating sequential processes 789:, and mathematical models such as 770:Communicating Sequential Processes 186:Concurrent computing is a form of 25: 2335:. New York: McGraw-Hill. p.  1929:Schneider, Fred B. (1997-05-06). 1809:, but the processor alone is not. 1395:are part of Fortran 2008 standard 766:Calculus of Communicating Systems 239:This section has multiple issues. 3259:Partitioned global address space 2612: 2611: 2395: 1965:(2nd ed.). Addison-Wesley. 1841:Hansen, Per Brinch, ed. (2002). 1502:—concurrent, teaching, built on 1236:—Binary Modular DataFlow Machine 1109:Concurrent programming languages 993:, with or without shared memory 862: 667: 450:a computation across a network. 327: 269: 228: 45: 2161:"Typesafe Shared Mutable State" 1773:Race condition § Computing 1115:. These constructs may involve 1060:At the operating system level: 280:needs additional citations for 247:or discuss these issues on the 56:needs additional citations for 32:Concurrent Computer Corporation 3501:Types of programming languages 2618:Category: Concurrent computing 2000:IEEE Transactions on Computers 1141:concurrency-oriented languages 409:during the same period of time 36:Concurrency (computer science) 1: 2294:The Little Book of Semaphores 1986:Patterson & Hennessy 2013 1912:"Parallelism vs. Concurrency" 954:Message passing communication 906:Interaction and communication 801:Software transactional memory 3633:Programming paradigms navbox 2786:Uniform Function Call Syntax 1529:, for system programming in 1458:, in a browser environment, 1080:, which replaced sequential 3656:Operating system technology 3254:Parallel programming models 3228:Concurrent constraint logic 2579:Dining philosophers problem 1961:Ben-Ari, Mordechai (2006). 1327:system programming language 918:Shared memory communication 353:the claims made and adding 3672: 3347:Metalinguistic abstraction 3214:Automatic mutual exclusion 2468:Concurrent data structures 2354:Leppäjärvi, Jouni (2008). 2291:Downey, Allen B. (2005) . 2272:Herlihy, Maurice (2008) . 1531:Inferno (operating system) 1016:time-division multiplexing 925:locations (exemplified by 847: 818: 217: 194:an overall computation is 29: 3219:Choreographic programming 2607: 2584:Producer–consumer problem 2569:Cigarette smokers problem 2368:Taubenfeld, Gadi (2006). 2242:Communications of the ACM 1933:On Concurrent Programming 1899:http://vimeo.com/49718712 1853:10.1007/978-1-4757-3472-0 1829:Operating System Concepts 1299:—concurrent extension of 991:symmetric multiprocessing 785:Logics such as Lamport's 782:were introduced in 1987. 3269:Relativistic programming 1422:—actor-based concurrency 1069:cooperative multitasking 896:operating system process 645:balance >= withdrawal 540: 442:Concurrent computations 2599:Sleeping barber problem 2594:Readers–writers problem 2056:Armstrong, Joe (2003). 2012:10.1109/TC.1979.1675439 1575:—influenced heavily by 1073:preemptive multitasking 653:non-blocking algorithms 3279:Structured concurrency 2664:Comparison by language 2473:Concurrent hash tables 2402:Concurrent programming 1783:Transaction processing 1778:Structured concurrency 1758:Flow-based programming 1486:—concurrent, based on 1285:Concurrent Collections 842:sequential consistency 758:Dataflow architectures 80:"Concurrent computing" 18:Concurrent computation 3622:Programming languages 3244:Multitier programming 3060:Interface description 2660:Programming paradigms 2363:. University of Oulu. 2256:10.1145/365559.365617 1585:—a modern variant of 1200:Plan 9 from Bell Labs 1121:distributed computing 1065:Computer multitasking 780:Input/output automata 631:, and two concurrent 489:concurrent/sequential 3651:Concurrent computing 2444:Concurrent computing 2404:at Wikimedia Commons 1137:futures and promises 1055:Futures and promises 795:Actor event diagrams 752:Introduced in 1962, 691:improve this section 289:improve this article 144:Concurrent computing 65:improve this article 3384:Self-modifying code 2992:Probabilistic logic 2923:Functional reactive 2878:Expression-oriented 2832:Partial application 2463:Concurrency control 2300:. Green Tea Press. 2276:. Morgan Kaufmann. 1506:with features from 1428:—features distinct 959:exchanging messages 809:atomic transactions 532:resource starvation 520:concurrency control 508:concurrency control 506:, which simplifies 188:modular programming 3297:Attribute-oriented 3070:List comprehension 3015:Algebraic modeling 2828:Anonymous function 2720:Design by contract 2690:Jackson structures 2159:Blum, Ben (2012). 1763:Java ConcurrentMap 1291:Concurrent Haskell 874:. You can help by 850:Relaxed sequential 815:Consistency models 405:parallel computing 338:possibly contains 220:Parallel computing 3611:Computer language 3598: 3597: 3467: 3466: 3357:Program synthesis 3249:Organic computing 3185: 3184: 3090:Non-English-based 3065:Language-oriented 2843:Purely functional 2794: 2793: 2626: 2625: 2400:Media related to 2381:978-0-13-197259-9 2346:978-0-07-022439-1 2307:978-1-4414-1868-5 1972:978-0-321-31283-9 1862:978-1-4419-2986-0 1694:Per Brinch Hansen 1686:Concurrent Pascal 1512:Per Brinch Hansen 1504:Concurrent Pascal 1476:, implements the 1310:Per Brinch Hansen 1306:Concurrent Pascal 1067:, including both 892: 891: 827:consistency model 821:Consistency model 727: 726: 719: 401: 400: 393: 383: 382: 375: 340:original research 321: 320: 313: 262: 204:Per Brinch Hansen 181:concurrent system 150:in which several 141: 140: 133: 115: 16:(Redirected from 3663: 3637: 3631: 3626: 3620: 3615: 3609: 3494: 3487: 3480: 3471: 3369:by demonstration 3274:Service-oriented 3264:Process-oriented 3239:Macroprogramming 3224:Concurrent logic 3095:Page description 3085:Natural language 3055:Grammar-oriented 2982:Nondeterministic 2971:Constraint logic 2873:Point-free style 2868:Functional logic 2805: 2776:Immutable object 2695:Block-structured 2678: 2653: 2646: 2639: 2630: 2615: 2614: 2557:Classic problems 2533:Ambient calculus 2480:Concurrent users 2437: 2430: 2423: 2414: 2399: 2385: 2364: 2362: 2350: 2325: 2323: 2322: 2316: 2310:. Archived from 2299: 2287: 2268: 2258: 2220: 2216:978-0-12407886-4 2192: 2191: 2189: 2188: 2177: 2171: 2170: 2168: 2167: 2156: 2150: 2145: 2139: 2138: 2136: 2135: 2121: 2115: 2109: 2103: 2093: 2087: 2082: 2076: 2071: 2065: 2064: 2062: 2053: 2047: 2046: 2045: 2044: 2030: 2024: 2023: 1995: 1989: 1983: 1977: 1976: 1958: 1949: 1948: 1936: 1926: 1920: 1919: 1908: 1902: 1884: 1875: 1874: 1838: 1832: 1826: 1810: 1799: 1748:Asynchronous I/O 1536:Locomotive BASIC 1276:Concurrent Clean 1129:shared resources 1082:batch processing 1027:mutual exclusion 961:(exemplified by 887: 884: 866: 859: 722: 715: 711: 708: 702: 671: 663: 650: 646: 642: 638: 630: 623: 620: 617: 614: 611: 608: 605: 602: 599: 598: 595: 592: 589: 585: 582: 581: 578: 575: 572: 569: 566: 562: 559: 556: 553: 550: 547: 544: 537: 396: 389: 378: 371: 367: 364: 358: 355:inline citations 331: 330: 323: 316: 309: 305: 302: 296: 273: 265: 254: 232: 231: 224: 136: 129: 125: 122: 116: 114: 73: 49: 41: 21: 3671: 3670: 3666: 3665: 3664: 3662: 3661: 3660: 3641: 3640: 3635: 3629: 3624: 3618: 3613: 3607: 3604: 3599: 3594: 3556: 3547:Very high-level 3503: 3498: 3468: 3463: 3405: 3398: 3289:Metaprogramming 3283: 3199: 3194: 3181: 3163:Graph rewriting 3001: 2977:Inductive logic 2957:Abductive logic 2943: 2900: 2863:Dependent types 2811: 2790: 2762:Prototype-based 2742: 2740:Object-oriented 2734: 2730:Nested function 2725:Invariant-based 2667: 2657: 2627: 2622: 2603: 2552: 2500:Process calculi 2494: 2490:Linearizability 2446: 2441: 2392: 2382: 2367: 2360: 2353: 2347: 2328: 2320: 2318: 2314: 2308: 2297: 2290: 2284: 2271: 2233:Dijkstra, E. W. 2231: 2228: 2226:Further reading 2223: 2217: 2204: 2200: 2195: 2186: 2184: 2179: 2178: 2174: 2165: 2163: 2158: 2157: 2153: 2146: 2142: 2133: 2131: 2123: 2122: 2118: 2110: 2106: 2094: 2090: 2083: 2079: 2072: 2068: 2060: 2055: 2054: 2050: 2042: 2040: 2032: 2031: 2027: 1997: 1996: 1992: 1984: 1980: 1973: 1960: 1959: 1952: 1945: 1928: 1927: 1923: 1910: 1909: 1905: 1891:Waza conference 1885: 1878: 1863: 1840: 1839: 1835: 1827: 1823: 1819: 1814: 1813: 1800: 1796: 1791: 1768:Ptolemy Project 1744: 1720:)—IEEE STD-1076 1671:race conditions 1125:message passing 1117:multi-threading 1106: 1035: 1023:Dijkstra (1965) 1008: 995:cache coherence 987:process calculi 908: 888: 882: 879: 872:needs expansion 857: 852: 831:computer memory 823: 817: 807:the concept of 805:database theory 762:process calculi 750: 735:Gustafson's law 723: 712: 706: 703: 688: 672: 661: 648: 644: 640: 636: 635:make the calls 628: 625: 624: 621: 618: 615: 612: 609: 606: 603: 600: 596: 593: 590: 587: 586: 583: 579: 576: 573: 570: 567: 564: 563: 560: 557: 554: 551: 548: 545: 542: 535: 524:race conditions 516: 498:serial schedule 493:parallel/serial 417:multi-processor 397: 386: 385: 384: 379: 368: 362: 359: 344: 332: 328: 317: 306: 300: 297: 286: 274: 233: 229: 222: 216: 200:Edsger Dijkstra 137: 126: 120: 117: 74: 72: 62: 50: 39: 28: 23: 22: 15: 12: 11: 5: 3669: 3667: 3659: 3658: 3653: 3643: 3642: 3639: 3638: 3627: 3616: 3603: 3600: 3596: 3595: 3593: 3592: 3587: 3582: 3577: 3572: 3566: 3564: 3558: 3557: 3555: 3554: 3549: 3544: 3539: 3533: 3532: 3527: 3522: 3517: 3511: 3509: 3505: 3504: 3499: 3497: 3496: 3489: 3482: 3474: 3465: 3464: 3462: 3461: 3456: 3451: 3446: 3441: 3436: 3431: 3426: 3421: 3416: 3410: 3408: 3400: 3399: 3397: 3396: 3391: 3386: 3381: 3376: 3354: 3349: 3344: 3334: 3329: 3324: 3319: 3314: 3309: 3299: 3293: 3291: 3285: 3284: 3282: 3281: 3276: 3271: 3266: 3261: 3256: 3251: 3246: 3241: 3236: 3231: 3221: 3216: 3211: 3205: 3203: 3187: 3186: 3183: 3182: 3180: 3179: 3174: 3159:Transformation 3156: 3151: 3146: 3141: 3136: 3131: 3126: 3121: 3116: 3111: 3106: 3097: 3092: 3087: 3082: 3077: 3072: 3067: 3062: 3057: 3052: 3047: 3045:Differentiable 3042: 3032: 3025:Automata-based 3022: 3017: 3011: 3009: 3003: 3002: 3000: 2999: 2994: 2989: 2984: 2979: 2974: 2964: 2959: 2953: 2951: 2945: 2944: 2942: 2941: 2936: 2931: 2926: 2916: 2910: 2908: 2902: 2901: 2899: 2898: 2892:Function-level 2889: 2880: 2875: 2870: 2865: 2860: 2855: 2850: 2845: 2840: 2835: 2825: 2819: 2817: 2802: 2796: 2795: 2792: 2791: 2789: 2788: 2783: 2778: 2773: 2768: 2754: 2752: 2736: 2735: 2733: 2732: 2727: 2722: 2717: 2712: 2707: 2705:Non-structured 2702: 2697: 2692: 2686: 2684: 2675: 2669: 2668: 2658: 2656: 2655: 2648: 2641: 2633: 2624: 2623: 2621: 2620: 2608: 2605: 2604: 2602: 2601: 2596: 2591: 2589:Race condition 2586: 2581: 2576: 2571: 2566: 2560: 2558: 2554: 2553: 2551: 2550: 2545: 2540: 2535: 2530: 2525: 2520: 2515: 2510: 2504: 2502: 2496: 2495: 2493: 2492: 2487: 2482: 2477: 2476: 2475: 2465: 2460: 2454: 2452: 2448: 2447: 2442: 2440: 2439: 2432: 2425: 2417: 2411: 2410: 2405: 2391: 2390:External links 2388: 2387: 2386: 2380: 2365: 2351: 2345: 2326: 2306: 2288: 2283:978-0123705914 2282: 2269: 2227: 2224: 2222: 2221: 2215: 2201: 2199: 2196: 2194: 2193: 2172: 2151: 2140: 2129:docs.perl6.org 2116: 2104: 2088: 2077: 2066: 2048: 2025: 2006:(9): 690–691. 1990: 1988:, p. 503. 1978: 1971: 1950: 1943: 1921: 1903: 1876: 1861: 1833: 1820: 1818: 1815: 1812: 1811: 1793: 1792: 1790: 1787: 1786: 1785: 1780: 1775: 1770: 1765: 1760: 1755: 1750: 1743: 1740: 1736: 1735: 1721: 1714: 1708: 1702: 1696: 1679: 1673: 1664: 1658: 1652: 1643: 1637: 1631: 1625: 1616: 1610: 1604: 1602:Kleene algebra 1595: 1594: 1593: 1570: 1561: 1555: 1549: 1539: 1533: 1520: 1514: 1497: 1491: 1481: 1467: 1449: 1443: 1437: 1423: 1417: 1411: 1405: 1396: 1382: 1377:or a specific 1368: 1362: 1356: 1346: 1340: 1334: 1324:multi-paradigm 1317: 1312: 1303: 1294: 1288: 1282: 1273: 1255: 1249: 1243: 1237: 1231: 1225: 1217:—extension to 1212: 1207:—extension to 1202: 1193: 1119:, support for 1105: 1102: 1098: 1097: 1092: 1087: 1086: 1085: 1058: 1057: 1052: 1047: 1034: 1031: 1007: 1004: 999: 998: 985:, and various 955: 951: 950: 919: 907: 904: 890: 889: 869: 867: 856: 855:Implementation 853: 838:Leslie Lamport 819:Main article: 816: 813: 749: 746: 745: 744: 741: 737: 725: 724: 675: 673: 666: 660: 657: 541: 515: 512: 485: 484: 477: 470: 399: 398: 381: 380: 335: 333: 326: 319: 318: 277: 275: 268: 263: 237: 236: 234: 227: 215: 212: 139: 138: 53: 51: 44: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 3668: 3657: 3654: 3652: 3649: 3648: 3646: 3634: 3628: 3623: 3617: 3612: 3606: 3605: 3601: 3591: 3588: 3586: 3583: 3581: 3578: 3576: 3573: 3571: 3568: 3567: 3565: 3563: 3559: 3553: 3550: 3548: 3545: 3543: 3540: 3538: 3535: 3534: 3531: 3528: 3526: 3523: 3521: 3518: 3516: 3513: 3512: 3510: 3506: 3502: 3495: 3490: 3488: 3483: 3481: 3476: 3475: 3472: 3460: 3457: 3455: 3452: 3450: 3447: 3445: 3442: 3440: 3437: 3435: 3432: 3430: 3429:Data-oriented 3427: 3425: 3422: 3420: 3417: 3415: 3412: 3411: 3409: 3407: 3401: 3395: 3392: 3390: 3387: 3385: 3382: 3380: 3377: 3374: 3370: 3366: 3362: 3358: 3355: 3353: 3350: 3348: 3345: 3342: 3338: 3335: 3333: 3330: 3328: 3327:Homoiconicity 3325: 3323: 3320: 3318: 3315: 3313: 3310: 3307: 3303: 3300: 3298: 3295: 3294: 3292: 3290: 3286: 3280: 3277: 3275: 3272: 3270: 3267: 3265: 3262: 3260: 3257: 3255: 3252: 3250: 3247: 3245: 3242: 3240: 3237: 3235: 3234:Concurrent OO 3232: 3229: 3225: 3222: 3220: 3217: 3215: 3212: 3210: 3207: 3206: 3204: 3202: 3197: 3192: 3188: 3178: 3175: 3172: 3168: 3164: 3160: 3157: 3155: 3152: 3150: 3147: 3145: 3142: 3140: 3137: 3135: 3132: 3130: 3129:Set-theoretic 3127: 3125: 3122: 3120: 3117: 3115: 3112: 3110: 3109:Probabilistic 3107: 3105: 3101: 3098: 3096: 3093: 3091: 3088: 3086: 3083: 3081: 3078: 3076: 3073: 3071: 3068: 3066: 3063: 3061: 3058: 3056: 3053: 3051: 3048: 3046: 3043: 3040: 3036: 3033: 3030: 3026: 3023: 3021: 3018: 3016: 3013: 3012: 3010: 3008: 3004: 2998: 2995: 2993: 2990: 2988: 2985: 2983: 2980: 2978: 2975: 2972: 2968: 2965: 2963: 2960: 2958: 2955: 2954: 2952: 2950: 2946: 2940: 2937: 2935: 2932: 2930: 2927: 2924: 2920: 2917: 2915: 2912: 2911: 2909: 2907: 2903: 2897: 2893: 2890: 2888: 2887:Concatenative 2884: 2881: 2879: 2876: 2874: 2871: 2869: 2866: 2864: 2861: 2859: 2856: 2854: 2851: 2849: 2846: 2844: 2841: 2839: 2836: 2833: 2829: 2826: 2824: 2821: 2820: 2818: 2815: 2810: 2806: 2803: 2801: 2797: 2787: 2784: 2782: 2779: 2777: 2774: 2772: 2769: 2767: 2763: 2759: 2756: 2755: 2753: 2750: 2746: 2741: 2737: 2731: 2728: 2726: 2723: 2721: 2718: 2716: 2713: 2711: 2708: 2706: 2703: 2701: 2698: 2696: 2693: 2691: 2688: 2687: 2685: 2683: 2679: 2676: 2674: 2670: 2665: 2661: 2654: 2649: 2647: 2642: 2640: 2635: 2634: 2631: 2619: 2610: 2609: 2606: 2600: 2597: 2595: 2592: 2590: 2587: 2585: 2582: 2580: 2577: 2575: 2572: 2570: 2567: 2565: 2562: 2561: 2559: 2555: 2549: 2548:Join-calculus 2546: 2544: 2541: 2539: 2536: 2534: 2531: 2529: 2526: 2524: 2521: 2519: 2516: 2514: 2511: 2509: 2506: 2505: 2503: 2501: 2497: 2491: 2488: 2486: 2485:Indeterminacy 2483: 2481: 2478: 2474: 2471: 2470: 2469: 2466: 2464: 2461: 2459: 2456: 2455: 2453: 2449: 2445: 2438: 2433: 2431: 2426: 2424: 2419: 2418: 2415: 2409: 2406: 2403: 2398: 2394: 2393: 2389: 2383: 2377: 2373: 2372: 2366: 2359: 2358: 2352: 2348: 2342: 2338: 2334: 2333: 2327: 2317:on 2016-03-04 2313: 2309: 2303: 2296: 2295: 2289: 2285: 2279: 2275: 2270: 2266: 2262: 2257: 2252: 2248: 2244: 2243: 2238: 2234: 2230: 2229: 2225: 2218: 2212: 2208: 2203: 2202: 2197: 2182: 2181:"Concurrency" 2176: 2173: 2162: 2155: 2152: 2149: 2144: 2141: 2130: 2126: 2125:"Concurrency" 2120: 2117: 2113: 2108: 2105: 2102: 2101:9781449335946 2098: 2092: 2089: 2086: 2081: 2078: 2075: 2070: 2067: 2059: 2052: 2049: 2039: 2035: 2029: 2026: 2021: 2017: 2013: 2009: 2005: 2001: 1994: 1991: 1987: 1982: 1979: 1974: 1968: 1964: 1957: 1955: 1951: 1946: 1944:9780387949420 1940: 1935: 1934: 1925: 1922: 1917: 1913: 1907: 1904: 1900: 1897:(slides) and 1896: 1892: 1888: 1883: 1881: 1877: 1872: 1868: 1864: 1858: 1854: 1850: 1846: 1845: 1837: 1834: 1830: 1825: 1822: 1816: 1808: 1804: 1798: 1795: 1788: 1784: 1781: 1779: 1776: 1774: 1771: 1769: 1766: 1764: 1761: 1759: 1756: 1754: 1751: 1749: 1746: 1745: 1741: 1739: 1733: 1729: 1725: 1722: 1719: 1715: 1712: 1709: 1707:—for research 1706: 1703: 1700: 1697: 1695: 1691: 1687: 1683: 1680: 1678:—for research 1677: 1674: 1672: 1668: 1665: 1662: 1659: 1656: 1653: 1651: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1626: 1624: 1620: 1617: 1614: 1611: 1608: 1605: 1603: 1599: 1596: 1592: 1588: 1584: 1581: 1580: 1578: 1574: 1571: 1569: 1565: 1562: 1559: 1556: 1553: 1550: 1547: 1543: 1540: 1537: 1534: 1532: 1528: 1525:—relative of 1524: 1521: 1518: 1515: 1513: 1509: 1505: 1501: 1498: 1495: 1492: 1489: 1485: 1482: 1479: 1478:join-calculus 1475: 1471: 1468: 1465: 1461: 1457: 1453: 1450: 1447: 1444: 1441: 1438: 1435: 1431: 1427: 1424: 1421: 1418: 1415: 1412: 1409: 1406: 1404: 1400: 1397: 1394: 1393:do concurrent 1390: 1386: 1383: 1380: 1379:work-stealing 1376: 1372: 1369: 1366: 1363: 1360: 1357: 1354: 1351:—through its 1350: 1347: 1344: 1341: 1338: 1335: 1332: 1328: 1325: 1321: 1318: 1316: 1313: 1311: 1307: 1304: 1302: 1298: 1297:Concurrent ML 1295: 1292: 1289: 1286: 1283: 1281: 1277: 1274: 1271: 1267: 1263: 1259: 1256: 1253: 1250: 1247: 1244: 1241: 1238: 1235: 1232: 1229: 1226: 1224: 1220: 1216: 1213: 1210: 1206: 1203: 1201: 1197: 1194: 1191: 1188: 1187: 1186: 1184: 1180: 1176: 1172: 1167: 1165: 1161: 1157: 1153: 1148: 1146: 1142: 1138: 1134: 1133:shared memory 1130: 1126: 1122: 1118: 1114: 1110: 1103: 1101: 1096: 1093: 1091: 1088: 1083: 1079: 1076: 1075: 1074: 1070: 1066: 1063: 1062: 1061: 1056: 1053: 1051: 1048: 1046: 1043: 1042: 1041: 1038: 1032: 1030: 1028: 1024: 1019: 1017: 1013: 1005: 1003: 996: 992: 988: 984: 980: 976: 972: 968: 964: 960: 956: 953: 952: 948: 944: 940: 936: 932: 928: 924: 923:shared memory 920: 917: 916: 915: 913: 905: 903: 901: 897: 886: 883:February 2014 877: 873: 870:This section 868: 865: 861: 860: 854: 851: 846: 843: 839: 834: 832: 828: 822: 814: 812: 810: 806: 803:borrows from 802: 798: 796: 792: 788: 783: 781: 777: 775: 771: 767: 763: 759: 755: 747: 742: 738: 736: 732: 731: 730: 721: 718: 710: 707:December 2006 700: 696: 692: 686: 685: 681: 676:This section 674: 670: 665: 664: 658: 656: 654: 647:evaluates to 641:withdraw(350) 637:withdraw(300) 634: 629:balance = 500 539: 533: 529: 525: 521: 513: 511: 509: 505: 504: 499: 494: 490: 482: 478: 475: 471: 468: 464: 460: 459: 458: 456: 451: 449: 445: 440: 438: 434: 429: 426: 422: 418: 414: 410: 406: 395: 392: 377: 374: 366: 363:December 2016 356: 352: 348: 342: 341: 336:This section 334: 325: 324: 315: 312: 304: 301:December 2016 294: 290: 284: 283: 278:This section 276: 272: 267: 266: 261: 259: 252: 251: 246: 245: 240: 235: 226: 225: 221: 213: 211: 209: 205: 201: 197: 193: 189: 184: 182: 178: 174: 170: 165: 163: 162:sequentially— 159: 158: 154:are executed 153: 149: 146:is a form of 145: 135: 132: 124: 121:February 2014 113: 110: 106: 103: 99: 96: 92: 89: 85: 82: â€“  81: 77: 76:Find sources: 70: 66: 60: 59: 54:This article 52: 48: 43: 42: 37: 33: 19: 3636:}} 3630:{{ 3625:}} 3619:{{ 3614:}} 3608:{{ 3434:Event-driven 3190: 2838:Higher-order 2766:Object-based 2538:API-Calculus 2443: 2370: 2356: 2331: 2319:. Retrieved 2312:the original 2293: 2273: 2246: 2240: 2206: 2185:. Retrieved 2175: 2164:. Retrieved 2154: 2143: 2132:. Retrieved 2128: 2119: 2107: 2091: 2080: 2069: 2051: 2041:, retrieved 2037: 2028: 2003: 1999: 1993: 1981: 1962: 1937:. Springer. 1932: 1924: 1916:Haskell Wiki 1915: 1906: 1890: 1843: 1836: 1828: 1824: 1802: 1797: 1737: 1480:of processes 1433: 1429: 1392: 1168: 1149: 1144: 1140: 1107: 1099: 1078:Time-sharing 1059: 1039: 1036: 1020: 1009: 1000: 909: 893: 880: 876:adding to it 871: 835: 824: 799: 784: 778: 751: 728: 713: 704: 689:Please help 677: 632: 626: 517: 503:serializable 501: 497: 492: 488: 486: 480: 473: 466: 462: 452: 448:distributing 443: 441: 436: 433:time-sharing 430: 424: 408: 402: 387: 369: 360: 337: 307: 298: 287:Please help 282:verification 279: 255: 248: 242: 241:Please help 238: 214:Introduction 208:C.A.R. Hoare 185: 180: 166: 161: 157:concurrently 155: 152:computations 143: 142: 127: 118: 108: 101: 94: 87: 75: 63:Please help 58:verification 55: 3530:Interpreted 3444:Intentional 3424:Data-driven 3406:of concerns 3365:Inferential 3352:Multi-stage 3332:Interactive 3209:Actor-based 3196:distributed 3139:Stack-based 2939:Synchronous 2896:Value-level 2883:Applicative 2800:Declarative 2758:Class-based 2564:ABA problem 2458:Concurrency 1807:coprocessor 1730:, based on 1682:SuperPascal 1456:web workers 1331:actor model 1301:Standard ML 1264:dialect of 1209:Standard ML 1131:(including 1113:concurrency 983:actor model 947:thread-safe 483:concurrent) 476:concurrent) 469:sequential) 3645:Categories 3562:Generation 3542:High-level 3419:Components 3404:Separation 3379:Reflective 3373:by example 3317:Extensible 3191:Concurrent 3167:Production 3154:Templating 3134:Simulation 3119:Scientific 3039:Spacecraft 2967:Constraint 2962:Answer set 2914:Flow-based 2814:comparison 2809:Functional 2781:Persistent 2745:comparison 2710:Procedural 2682:Structured 2673:Imperative 2528:Ď€-calculus 2321:2009-11-21 2249:(9): 569. 2187:2022-12-15 2166:2012-11-14 2134:2017-12-24 2043:2009-08-24 1817:References 1646:Red/System 1623:Ď€-calculus 1591:Ď€-calculus 1452:JavaScript 1343:ECMAScript 1262:functional 1223:Ď€-calculus 1033:Prevalence 1012:telegraphy 939:semaphores 848:See also: 774:Ď€-calculus 768:(CCS) and 754:Petri nets 659:Advantages 594:withdrawal 577:withdrawal 555:withdrawal 463:vice versa 455:scheduling 413:processors 347:improve it 244:improve it 218:See also: 91:newspapers 3537:Low-level 3306:Inductive 3302:Automatic 3124:Scripting 2823:Recursive 1887:Pike, Rob 1753:Chu space 1667:SequenceL 1607:Oz-Mozart 1564:Newsqueak 1542:MultiLisp 1484:Join Java 1464:callbacks 1381:scheduler 1260:—modern, 1050:Coroutine 1018:(1870s). 678:does not 528:deadlocks 425:lifetimes 351:verifying 250:talk page 190:. In its 148:computing 3602:See also 3552:Esoteric 3525:Compiled 3520:Assembly 3459:Subjects 3449:Literate 3439:Features 3394:Template 3389:Symbolic 3361:Bayesian 3341:Hygienic 3201:parallel 3080:Modeling 3075:Low-code 3050:End-user 2987:Ontology 2919:Reactive 2906:Dataflow 2574:Deadlock 2265:19357737 2235:(1965). 1901:(video). 1871:44909506 1742:See also 1613:ParaSail 1558:Modula-3 1552:Modula-2 1490:language 1460:promises 1389:coarrays 1272:platform 1215:Ateji PX 1160:monitors 1147:(COPL). 943:monitors 764:such as 627:Suppose 546:withdraw 465:(serial 421:one-core 196:factored 192:paradigm 173:computer 3515:Machine 3414:Aspects 3322:Generic 3312:Dynamic 3171:Pattern 3149:Tactile 3114:Quantum 3104:filters 3035:Command 2934:Streams 2929:Signals 2700:Modular 2451:General 2198:Sources 2020:5679366 1803:machine 1583:occam-Ď€ 1517:LabVIEW 1434:tellers 1408:Haskell 1385:Fortran 1280:Haskell 1268:on the 1258:Clojure 1090:Process 1045:Channel 1006:History 935:mutexes 912:futures 900:threads 699:removed 684:sources 633:threads 588:balance 571:balance 536:balance 345:Please 177:network 175:, or a 169:program 105:scholar 3585:Fourth 3575:Second 3177:Visual 3144:System 3029:Action 2853:Strict 2616:  2378:  2343:  2304:  2280:  2263:  2213:  2183:. 2022 2099:  2018:  1969:  1941:  1869:  1859:  1705:Unicon 1634:Python 1579:(CSP) 1546:Scheme 1470:JoCaml 1462:, and 1430:askers 1375:OpenMP 1365:Erlang 1359:Elixir 1349:Eiffel 1181:, and 1175:Erlang 1164:Erlang 1095:Thread 975:Erlang 791:traces 748:Models 613:return 601:return 530:, and 437:paused 206:, and 107:  100:  93:  86:  78:  3590:Fifth 3580:Third 3570:First 3508:Level 3454:Roles 3337:Macro 3100:Pipes 3020:Array 2997:Query 2949:Logic 2858:GADTs 2848:Total 2771:Agent 2523:LOTOS 2361:(PDF) 2315:(PDF) 2298:(PDF) 2261:S2CID 2061:(PDF) 2016:S2CID 1867:S2CID 1789:Notes 1711:TNSDL 1699:Swift 1690:Joyce 1661:Scala 1650:Rebol 1587:occam 1573:occam 1523:Limbo 1500:Joyce 1494:Joule 1474:OCaml 1454:—via 1446:Julia 1426:Janus 1371:FAUST 1353:SCOOP 1315:Curry 1234:BMDFM 1205:Alice 1183:occam 1179:Limbo 1135:) or 979:occam 971:Scala 941:, or 740:task. 616:false 574:>= 415:of a 112:JSTOR 98:books 3102:and 2749:list 2543:PEPA 2376:ISBN 2341:ISBN 2302:ISBN 2278:ISBN 2211:ISBN 2097:ISBN 2004:C-28 1967:ISBN 1939:ISBN 1857:ISBN 1728:XMOS 1718:VHDL 1688:and 1655:Rust 1640:Reia 1628:Raku 1619:Pict 1568:Alef 1527:Alef 1488:Java 1440:Java 1432:and 1414:Hume 1391:and 1308:—by 1270:Java 1266:Lisp 1228:Axum 1219:Java 1196:Alef 1171:Pict 1154:and 1152:Java 1071:and 977:and 929:and 927:Java 793:and 787:TLA+ 682:any 680:cite 649:true 639:and 604:true 543:bool 491:and 84:news 3007:DSL 2518:ACP 2513:CCS 2508:CSP 2337:370 2251:doi 2008:doi 1849:doi 1692:by 1598:Orc 1510:by 1508:CSP 1403:CSP 1240:C++ 1190:Ada 1143:or 963:MPI 878:. 840:'s 693:by 552:int 481:and 474:and 467:and 444:may 349:by 291:by 67:by 3647:: 3371:, 3367:, 3363:, 3169:, 3165:, 2894:, 2885:, 2764:, 2760:, 2747:, 2339:. 2259:. 2245:. 2239:. 2127:. 2036:, 2014:. 2002:. 1953:^ 1914:. 1879:^ 1865:. 1855:. 1847:. 1724:XC 1676:SR 1420:Io 1399:Go 1252:C# 1246:Cω 1177:, 1156:C# 1127:, 1123:, 1029:. 973:, 969:, 967:Go 965:, 937:, 931:C# 655:. 591:-= 565:if 538:: 526:, 510:. 253:. 210:. 202:, 171:, 3493:e 3486:t 3479:v 3375:) 3359:( 3343:) 3339:( 3308:) 3304:( 3230:) 3226:( 3198:, 3193:, 3173:) 3161:( 3041:) 3037:( 3031:) 3027:( 2973:) 2969:( 2925:) 2921:( 2834:) 2830:( 2816:) 2812:( 2751:) 2743:( 2666:) 2662:( 2652:e 2645:t 2638:v 2436:e 2429:t 2422:v 2384:. 2349:. 2324:. 2286:. 2267:. 2253:: 2247:8 2219:. 2190:. 2169:. 2137:. 2063:. 2022:. 2010:: 1975:. 1947:. 1918:. 1873:. 1851:: 1544:— 1466:. 1387:— 1337:E 1333:) 1322:— 1320:D 997:. 949:. 885:) 881:( 720:) 714:( 709:) 705:( 701:. 687:. 622:} 619:; 610:} 607:; 597:; 584:{ 580:) 568:( 561:{ 558:) 549:( 394:) 388:( 376:) 370:( 365:) 361:( 343:. 314:) 308:( 303:) 299:( 285:. 260:) 256:( 134:) 128:( 123:) 119:( 109:· 102:· 95:· 88:· 61:. 38:. 20:)

Index

Concurrent computation
Concurrent Computer Corporation
Concurrency (computer science)

verification
improve this article
adding citations to reliable sources
"Concurrent computing"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
computing
computations
concurrently
program
computer
network
modular programming
paradigm
factored
Edsger Dijkstra
Per Brinch Hansen
C.A.R. Hoare
Parallel computing
improve it
talk page
Learn how and when to remove these messages

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑