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:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.