Knowledge (XXG)

Concurrency (computer science)

Source 📝

49: 108: 1427: 448: 312:
The proliferation of different models of concurrency has motivated some researchers to develop ways to unify these different theoretical models. For example, Lee and Sangiovanni-Vincentelli have demonstrated that a so-called "tagged-signal" model can be used to provide a common framework for defining
304:
Some of these models of concurrency are primarily intended to support reasoning and specification, while others can be used through the entire development cycle, including design, implementation, proof, testing and simulation of concurrent systems. Some of these are based on
540:). Some concurrent systems implement a form of transparent concurrency, in which concurrent computational entities may compete for and share a single resource, but the complexities of this competition and sharing are shielded from the programmer. 324:
The Concurrency Representation Theorem in the actor model provides a fairly general way to represent concurrent systems that are closed in the sense that they do not receive communications from outside. (Other concurrency systems, e.g.,
515:
because it can involve arbitrary and dynamic patterns of communication and interaction, whereas parallel systems generally have a predefined and well-structured communications pattern. The base goals of concurrent programming include
166:
Because computations in a concurrent system can interact with each other while being executed, the number of possible execution paths in the system can be extremely large, and the resulting outcome can be
127:, each core performing a task independently. On the other hand, concurrency enables a program to deal with multiple tasks even on a single CPU core; the core switches between tasks (i.e. 625: 469: 1248: 661: 547:
somewhere in their implementation (often in the underlying hardware), to control access to those resources. The use of arbiters introduces the possibility of
511:
encompasses programming languages and algorithms used to implement concurrent systems. Concurrent programming is usually considered to be more general than
1336: 1452: 1298: 548: 168: 615: 1145: 1126: 1107: 1088: 1069: 1036: 889: 860: 984: 218:
in the early 1960s. In the years since, a wide variety of formalisms have been developed for modeling and reasoning about concurrency.
1331: 1321: 1241: 265: 1326: 1191: 1177: 1163: 789: 495: 259: 677: 101: 536:
are generally designed to operate indefinitely, including automatic recovery from failure, and not terminate unexpectedly (see
31: 473: 231: 147: 1397: 48: 1431: 1234: 646: 641: 282: 207: 186:
Design of concurrent systems often entails finding reliable techniques for coordinating their execution, data exchange,
42: 1407: 415:, allow assertions to be made about the sequences of states that a concurrent system can pass through. Others, such as 1392: 1387: 692: 551:
which has major implications for practice including correctness and performance. For example, arbitration introduces
176: 172: 53: 458: 416: 921: 104:
of a program, algorithm, or problem into order-independent or partially-ordered components or units of computation.
707: 533: 434:(changes in state). The principal application of these logics is in writing specifications for concurrent systems. 477: 462: 420: 1382: 1281: 651: 567: 427: 330: 293: 243: 155: 929: 631: 559:
because it causes explosion in the state space and can even cause models to have an infinite number of states.
552: 1208: 733: 1412: 317:
of a variety of different models of concurrency, while Nielsen, Sassone, and Winskel have demonstrated that
712: 571: 508: 412: 314: 226:
A number of formalisms for modeling and understanding concurrent systems have been developed, including:
1286: 1000: 636: 544: 408: 191: 81: 543:
Because they use shared resources, concurrent systems in general require the inclusion of some kind of
1257: 610: 512: 124: 97: 92:
execution of the concurrent units, which can significantly improve overall speed of the execution in
38: 1276: 697: 682: 620: 605: 537: 180: 131:) without necessarily completing each one. A program can have both, neither of or a combination of 957: 831: 756: 702: 672: 138:
A number of mathematical models have been developed for general concurrent computation including
132: 128: 120: 89: 588: 974:
Frederick Knabe. A Distributed Protocol for Channel-Based Communication with Choice PARLE 1992.
1187: 1173: 1159: 1141: 1122: 1103: 1084: 1065: 1032: 885: 856: 785: 599: 187: 1346: 1313: 988: 938: 821: 748: 529: 287: 116: 107: 69: 61: 1303: 1293: 1013: 687: 326: 318: 306: 254: 211: 143: 93: 77: 850: 1402: 1058: 987:(June 1981). "Foundations of Actor Semantics". Mathematics Doctoral Dissertation. MIT. 878: 556: 424: 404: 1446: 1361: 1341: 760: 271: 85: 835: 1351: 407:
can be used to help reason about concurrent systems. Some of these logics, such as
298: 337:
is constructed increasingly better approximations from an initial behavior called
17: 1377: 656: 447: 278: 237: 151: 195: 1156:
Quantitative assessments of distributed systems: Methodologies and techniques
1217: 583: 563: 395:
can be mathematically characterized in terms of all its possible behaviors.
321:
can be used to provide a similar unified understanding of different models.
249: 215: 139: 73: 1172:(Second;2;2nd 2013; ed.). New York, NY: Springer.10.1007/978-1-4614-6859-2 849:
Campbell, Colin; Johnson, Ralph; Miller, Ade; Toub, Stephen (August 2010).
826: 809: 752: 1226: 1203: 992: 594: 942: 1204:
Process Algebra Diary - Prof. Luca Aceto's blog on Concurrency Theory
880:
Coordinated Computing - Tools and Techniques for Distributed Software
667: 734:"Time, Clocks, and the Ordering of Events in a Distributed System" 123:
and concurrency are two different things: a parallel program uses
106: 1356: 1230: 920:
Lee, Edward; Alberto Sangiovanni-Vincentelli (December 1998).
574:
their timeslices, either to the system or to another process.
441: 56:, a classic problem involving concurrency and shared resources 100:
systems. In more technical terms, concurrency refers to the
206:
Concurrency theory has been an active field of research in
175:
can be a source of indeterminacy leading to issues such as
30:"Concurrent computer" redirects here. For the company, see 333:.) The mathematical denotation denoted by a closed system 309:, while others have different mechanisms for concurrency. 1184:
Resilience assessment and evaluation of computing systems
956:
Mogens Nielsen; Vladimiro Sassone; Glynn Winskel (1993).
1221: 905:
Keller, Jörg; Christoph Keßler; Jesper TrĂ€ff (2001).
1370: 1312: 1264: 1212: 1057: 877: 626:Construction and Analysis of Distributed Processes 88:, without affecting the outcome. This allows for 1079:Tanenbaum, Andrew S.; Van Steen, Maarten (2002). 922:"A Framework for Comparing Models of Computation" 808:Cleaveland, Rance; Scott Smolka (December 1996). 570:. In these models, threads of control explicitly 803: 801: 68:is the ability of different parts or units of a 27:Ability to execute a task in a non-serial manner 1158:(1st ed.). Somerset: John Wiley & Sons Inc. 1138:Concurrency: State Models and Java Programming 810:"Strategic Directions in Concurrency Research" 782:Parallel and Concurrent Programming in Haskell 662:International Conference on Concurrency Theory 1242: 1186:(1. Aufl.;1; ed.). London;Berlin;: Springer. 1081:Distributed Systems: Principles and Paradigms 958:"Relationships Between Models of Concurrency" 288:Simple Concurrent Object-Oriented Programming 8: 562:Some concurrent programming models include 476:. Unsourced material may be challenged and 430:, build their assertions from sequences of 1249: 1235: 1227: 1029:Modal and Temporal Properties of Processes 329:can be modeled in the actor model using a 242:Computational bridging models such as the 825: 496:Learn how and when to remove this message 353:to construct a denotation (meaning ) for 1154:Distefano, S., & Bruneo, D. (2015). 876:Filman, Robert; Daniel Friedman (1984). 852:Parallel Programming with Microsoft .NET 344:using a behavior approximating function 47: 724: 549:indeterminacy in concurrent computation 190:, and execution scheduling to minimize 1100:A Practical Theory of Reactive Systems 1009: 998: 616:Concurrent object-oriented programming 1170:Handbook of signal processing systems 37:For a more practical discussion, see 7: 474:adding citations to reliable sources 1168:Bhattacharyya, S. S. (2013;2014;). 210:. One of the first proposals was 1136:Magee, Jeff; Kramer, Jeff (2006). 266:Communicating sequential processes 25: 1218:Concurrency patterns presentation 1119:Elements of Distributed Computing 260:Calculus of communicating systems 135:and concurrency characteristics. 1426: 1425: 678:Partitioned global address space 446: 417:action computational tree logic 32:Concurrent Computer Corporation 1453:Concurrency (computer science) 1432:Category: Concurrent computing 232:parallel random-access machine 148:parallel random-access machine 1: 732:Lamport, Leslie (July 1978). 647:Erlang (programming language) 642:Elixir (programming language) 528:. Concurrent systems such as 1098:Kurki-Suonio, Reino (2005). 208:theoretical computer science 43:Concurrency (disambiguation) 1393:Dining philosophers problem 693:Rust (programming language) 534:Database management systems 171:. Concurrent use of shared 1469: 1282:Concurrent data structures 907:Practical PRAM Programming 708:X10 (programming language) 111:Parallelism vs concurrency 36: 29: 1421: 1398:Producer–consumer problem 1383:Cigarette smokers problem 1182:Wolter, K. (2012;2014;). 741:Communications of the ACM 652:Go (programming language) 568:deterministic concurrency 555:which raises issues with 428:temporal logic of actions 331:two-phase commit protocol 294:Reo Coordination Language 244:bulk synchronous parallel 156:Reo Coordination Language 1056:Lynch, Nancy A. (1996). 930:IEEE Transactions on CAD 784:. O'Reilly Media. 2013. 632:D (programming language) 553:unbounded nondeterminism 1413:Sleeping barber problem 1408:Readers–writers problem 1213:The WWW Virtual Library 1117:Garg, Vijay K. (2002). 1287:Concurrent hash tables 1060:Distributed Algorithms 1027:Roscoe, Colin (2001). 1008:Cite journal requires 909:. John Wiley and Sons. 713:Structured concurrency 509:Concurrent programming 413:computation tree logic 315:denotational semantics 112: 57: 41:. For other uses, see 827:10.1145/242223.242252 814:ACM Computing Surveys 753:10.1145/359545.359563 421:Hennessy–Milner logic 409:linear temporal logic 110: 54:"Dining Philosophers" 51: 1258:Concurrent computing 1121:. Wiley-IEEE Press. 962:REX School/Symposium 611:Concurrent computing 513:parallel programming 470:improve this section 39:Concurrent computing 1277:Concurrency control 1064:. Morgan Kaufmann. 855:. Microsoft Press. 698:Sheaf (mathematics) 621:Concurrency pattern 606:Concurrency control 538:Concurrency control 214:'s seminal work on 181:resource starvation 84:out-of-order or in 1209:Concurrent Systems 673:Parallel computing 637:Distributed system 125:multiple CPU cores 113: 58: 18:Concurrent systems 1440: 1439: 1147:978-0-470-09355-9 1128:978-0-471-03600-5 1109:978-3-540-23342-8 1090:978-0-13-088893-8 1083:. Prentice Hall. 1071:978-1-55860-348-6 1038:978-0-387-98717-0 943:10.1109/43.736561 937:(12): 1217–1229. 891:978-0-07-022439-1 862:978-0-7356-5159-3 530:Operating systems 506: 505: 498: 403:Various types of 188:memory allocation 16:(Redirected from 1460: 1429: 1428: 1371:Classic problems 1347:Ambient calculus 1294:Concurrent users 1251: 1244: 1237: 1228: 1151: 1132: 1113: 1094: 1075: 1063: 1043: 1042: 1024: 1018: 1017: 1011: 1006: 1004: 996: 981: 975: 972: 966: 965: 953: 947: 946: 926: 917: 911: 910: 902: 896: 895: 883: 873: 867: 866: 846: 840: 839: 829: 805: 796: 795: 778: 772: 771: 769: 767: 738: 729: 501: 494: 490: 487: 481: 450: 442: 394: 385: 356: 352: 343: 336: 117:computer science 62:computer science 21: 1468: 1467: 1463: 1462: 1461: 1459: 1458: 1457: 1443: 1442: 1441: 1436: 1417: 1366: 1314:Process calculi 1308: 1304:Linearizability 1260: 1255: 1200: 1148: 1135: 1129: 1116: 1110: 1097: 1091: 1078: 1072: 1055: 1052: 1050:Further reading 1047: 1046: 1039: 1026: 1025: 1021: 1007: 997: 985:William Clinger 983: 982: 978: 973: 969: 955: 954: 950: 924: 919: 918: 914: 904: 903: 899: 892: 884:. McGraw-Hill. 875: 874: 870: 863: 848: 847: 843: 807: 806: 799: 792: 780: 779: 775: 765: 763: 736: 731: 730: 726: 721: 688:Ptolemy Project 580: 502: 491: 485: 482: 467: 451: 440: 401: 392: 383: 379: 373: 369: 363: 354: 351: 345: 342: 338: 334: 327:process calculi 319:category theory 307:message passing 255:Process calculi 224: 212:Carl Adam Petri 204: 164: 144:process calculi 102:decomposability 94:multi-processor 46: 35: 28: 23: 22: 15: 12: 11: 5: 1466: 1464: 1456: 1455: 1445: 1444: 1438: 1437: 1435: 1434: 1422: 1419: 1418: 1416: 1415: 1410: 1405: 1403:Race condition 1400: 1395: 1390: 1385: 1380: 1374: 1372: 1368: 1367: 1365: 1364: 1359: 1354: 1349: 1344: 1339: 1334: 1329: 1324: 1318: 1316: 1310: 1309: 1307: 1306: 1301: 1296: 1291: 1290: 1289: 1279: 1274: 1268: 1266: 1262: 1261: 1256: 1254: 1253: 1246: 1239: 1231: 1225: 1224: 1215: 1206: 1199: 1198:External links 1196: 1195: 1194: 1180: 1166: 1152: 1146: 1133: 1127: 1114: 1108: 1095: 1089: 1076: 1070: 1051: 1048: 1045: 1044: 1037: 1019: 1010:|journal= 976: 967: 948: 912: 897: 890: 868: 861: 841: 797: 790: 773: 747:(7): 558–565. 723: 722: 720: 717: 716: 715: 710: 705: 700: 695: 690: 685: 680: 675: 670: 665: 659: 654: 649: 644: 639: 634: 629: 623: 618: 613: 608: 603: 597: 592: 586: 579: 576: 557:model checking 504: 503: 454: 452: 445: 439: 436: 405:temporal logic 400: 397: 389: 388: 387: 386: 381: 377: 371: 367: 349: 340: 302: 301: 296: 291: 285: 276: 275: 274: 269: 263: 252: 247: 240: 234: 223: 220: 203: 200: 163: 160: 26: 24: 14: 13: 10: 9: 6: 4: 3: 2: 1465: 1454: 1451: 1450: 1448: 1433: 1424: 1423: 1420: 1414: 1411: 1409: 1406: 1404: 1401: 1399: 1396: 1394: 1391: 1389: 1386: 1384: 1381: 1379: 1376: 1375: 1373: 1369: 1363: 1362:Join-calculus 1360: 1358: 1355: 1353: 1350: 1348: 1345: 1343: 1340: 1338: 1335: 1333: 1330: 1328: 1325: 1323: 1320: 1319: 1317: 1315: 1311: 1305: 1302: 1300: 1299:Indeterminacy 1297: 1295: 1292: 1288: 1285: 1284: 1283: 1280: 1278: 1275: 1273: 1270: 1269: 1267: 1263: 1259: 1252: 1247: 1245: 1240: 1238: 1233: 1232: 1229: 1223: 1219: 1216: 1214: 1210: 1207: 1205: 1202: 1201: 1197: 1193: 1192:9783642290329 1189: 1185: 1181: 1179: 1178:9781461468592 1175: 1171: 1167: 1165: 1164:9781119131144 1161: 1157: 1153: 1149: 1143: 1139: 1134: 1130: 1124: 1120: 1115: 1111: 1105: 1101: 1096: 1092: 1086: 1082: 1077: 1073: 1067: 1062: 1061: 1054: 1053: 1049: 1040: 1034: 1030: 1023: 1020: 1015: 1002: 994: 990: 986: 980: 977: 971: 968: 963: 959: 952: 949: 944: 940: 936: 932: 931: 923: 916: 913: 908: 901: 898: 893: 887: 882: 881: 872: 869: 864: 858: 854: 853: 845: 842: 837: 833: 828: 823: 819: 815: 811: 804: 802: 798: 793: 791:9781449335922 787: 783: 777: 774: 762: 758: 754: 750: 746: 742: 735: 728: 725: 718: 714: 711: 709: 706: 704: 701: 699: 696: 694: 691: 689: 686: 684: 681: 679: 676: 674: 671: 669: 666: 663: 660: 658: 655: 653: 650: 648: 645: 643: 640: 638: 635: 633: 630: 627: 624: 622: 619: 617: 614: 612: 609: 607: 604: 601: 598: 596: 593: 591:network nodes 590: 589:Client–server 587: 585: 582: 581: 577: 575: 573: 569: 565: 560: 558: 554: 550: 546: 541: 539: 535: 531: 527: 523: 519: 514: 510: 500: 497: 489: 479: 475: 471: 465: 464: 460: 455:This section 453: 449: 444: 443: 437: 435: 433: 429: 426: 422: 418: 414: 410: 406: 398: 396: 391:In this way, 376: 366: 362: 361: 360: 359: 358: 348: 332: 328: 322: 320: 316: 310: 308: 300: 299:Trace monoids 297: 295: 292: 289: 286: 284: 280: 277: 273: 270: 267: 264: 261: 258: 257: 256: 253: 251: 248: 245: 241: 239: 235: 233: 229: 228: 227: 221: 219: 217: 213: 209: 201: 199: 197: 194:and maximise 193: 192:response time 189: 184: 182: 178: 174: 170: 169:indeterminate 161: 159: 157: 153: 149: 145: 141: 136: 134: 130: 126: 122: 118: 115:Note that in 109: 105: 103: 99: 95: 91: 87: 86:partial order 83: 79: 75: 71: 67: 63: 55: 50: 44: 40: 33: 19: 1352:API-Calculus 1271: 1183: 1169: 1155: 1137: 1118: 1102:. Springer. 1099: 1080: 1059: 1031:. Springer. 1028: 1022: 1001:cite journal 979: 970: 961: 951: 934: 928: 915: 906: 900: 879: 871: 851: 844: 817: 813: 781: 776: 764:. Retrieved 744: 740: 727: 561: 542: 525: 521: 517: 507: 492: 483: 468:Please help 456: 431: 402: 390: 374: 364: 357:as follows: 346: 323: 311: 303: 279:Tuple spaces 225: 205: 185: 165: 137: 114: 65: 59: 1378:ABA problem 1272:Concurrency 993:1721.1/6935 657:Gordon Pask 564:coprocesses 522:performance 518:correctness 375:progression 347:progression 268:(CSP) model 246:(BSP) model 238:actor model 152:actor model 150:model, the 133:parallelism 121:parallelism 66:concurrency 1342:π-calculus 820:(4): 607. 766:4 February 719:References 526:robustness 486:April 2007 272:π-calculus 250:Petri nets 216:Petri nets 196:throughput 140:Petri nets 98:multi-core 1222:scaleconf 1220:given at 1140:. Wiley. 761:215822405 683:Processes 584:Chu space 457:does not 425:Lamport's 177:deadlocks 173:resources 74:algorithm 1447:Category 1388:Deadlock 836:13264261 664:(CONCUR) 578:See also 438:Practice 281:, e.g., 154:and the 90:parallel 82:executed 1265:General 703:Threads 600:Cluster 595:Clojure 545:arbiter 478:removed 463:sources 432:actions 290:(SCOOP) 129:threads 78:problem 70:program 1430:  1190:  1176:  1162:  1144:  1125:  1106:  1087:  1068:  1035:  888:  859:  834:  788:  759:  668:OpenMP 628:(CADP) 423:, and 399:Logics 365:Denote 222:Models 202:Theory 179:, and 162:Issues 146:, the 80:to be 1337:LOTOS 925:(PDF) 832:S2CID 757:S2CID 737:(PDF) 602:nodes 572:yield 283:Linda 262:(CCS) 76:, or 1357:PEPA 1188:ISBN 1174:ISBN 1160:ISBN 1142:ISBN 1123:ISBN 1104:ISBN 1085:ISBN 1066:ISBN 1033:ISBN 1014:help 886:ISBN 857:ISBN 786:ISBN 768:2016 566:and 532:and 524:and 461:any 459:cite 411:and 313:the 236:The 230:The 96:and 52:The 1332:ACP 1327:CCS 1322:CSP 1211:at 989:hdl 939:doi 822:doi 749:doi 472:by 372:i∈ω 370:≡ ⊔ 60:In 1449:: 1005:: 1003:}} 999:{{ 960:. 935:17 933:. 927:. 830:. 818:28 816:. 812:. 800:^ 755:. 745:21 743:. 739:. 520:, 419:, 380:(⊄ 198:. 183:. 158:. 142:, 119:, 72:, 64:, 1250:e 1243:t 1236:v 1150:. 1131:. 1112:. 1093:. 1074:. 1041:. 1016:) 1012:( 995:. 991:: 964:. 945:. 941:: 894:. 865:. 838:. 824:: 794:. 770:. 751:: 499:) 493:( 488:) 484:( 480:. 466:. 393:S 384:) 382:S 378:S 368:S 355:S 350:S 341:S 339:⊄ 335:S 45:. 34:. 20:)

Index

Concurrent systems
Concurrent Computer Corporation
Concurrent computing
Concurrency (disambiguation)

"Dining Philosophers"
computer science
program
algorithm
problem
executed
partial order
parallel
multi-processor
multi-core
decomposability

computer science
parallelism
multiple CPU cores
threads
parallelism
Petri nets
process calculi
parallel random-access machine
actor model
Reo Coordination Language
indeterminate
resources
deadlocks

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

↑