Dynamic Networks Everything I described so far is common to CSP (Communicating Sequential Processes) and the Actor model. Here’s what makes actors more general: Connections between actors are dynamic. Unlike processes in CSP, actors may establish communication channels dynamically. They may pass messages containing references to actors (or mailboxes). They can then send messages to those actors. Here’s a Scala example: receive { case (name: String, actor: Actor) => actor ! lookup(name) } The original message is a tuple combining a string and an actor object. The receiver sends the result of lookup(name) to the actor it has just learned about. Thus a new communication channel between the receiver and the unknown actor can be established at runtime. (In Kilim the same is possible by passing mailboxes via messages.)
This post is an overview of the concurrency features of Java 7. This includes the Fork/Join Framework, the TransferQueue and the ThreadLocalRandom class
We've discussed differences between parallel, computational systems and concurrent, event handling systems. Areas of differences include:
Determinism: desirable vs impossible
Sign of parallel safety: same results vs correct results
Parallelism bugs: easy to pinpoint vs impossible to define
Queues: implementation detail vs part of the interface
Preemption: nearly useless vs nearly essential
In an earlier post I mentioned that one goal of the new introductory curriculum at Carnegie Mellon is to teach parallelism as the general case of computing, rather than an esoteric, specialized subject for advanced students. Many people are incredulous when I tell them this, because it immediately conjures in their mind the myriad complexities…
D. Anderson, G. Blelloch, и Y. Wei. Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation, стр. 526--541. ACM, (18.06.2021)
T. Tu, X. Liu, L. Song, и Y. Zhang. Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems - ASPLOS \textquotesingle19, ACM, (2019)
J. Swalens, J. De Koster, и W. De Meuter. Proceedings of the 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control - AGERE 2018, стр. 33--43. ACM, (ноября 2018)
D. Aumayr, S. Marr, E. Gonzalez Boix, и H. Mössenböck. Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes, стр. 157--171. ACM, (октября 2019)
Q. Luo, F. Hariri, L. Eloussi, и D. Marinov. Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, стр. 643--653. ACM, (2014)
X. Chang, W. Dou, Y. Gao, J. Wang, J. Wei, и T. Huang. Proceedings of the 41st International Conference on Software Engineering, стр. 631--642. IEEE Press, (мая 2019)
H. Sun, D. Bonetta, F. Schiavio, и W. Binder. Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization, стр. 61--72. IEEE Press, (2019)