Additional Observations on Concurrency
We take the performance needs of our customers seriously. Most developers find the performance of Cincom Smalltalk™ to be more than adequate, especially when compared to other dynamic languages.
In speaking to this point, Arden Thomas, the Cincom Smalltalk Product Manager, says:
“As your use of concurrency goes up linearly, the complexity goes up exponentially. Concurrency can be a nightmare. It’s easy to get in over your head. We have a solution to that problem. It doesn’t work everywhere … we didn’t reinvent the wheel. But we have a solution that people use to get a big bang for your buck. Concurrency gives you a lot of places to make a mess or get in over your head. This is a simplified way to get big gains with little pain.”
In illustrating these points, Arden spoke about concurrency and the use of mutli-core using MatriX (Polycephaly). In that presentation, Arden demonstrated the following points:
- Developers should measure the elapsed time of their work—it helps to know where the problems are in order to address them.
- Green threads are an effective way to coordinate concurrency, whether coordinating virtual machines or overlapping “HTTP” calls. They are lightweight, and you can create hundreds in a fraction of a second.
- Developers should strive for simplicity. Remember if it gets out of hand, concurrency can get ugly and difficult very quickly. Follow the KISS principle (Keep it Simple, Smalltalk).
- The launch of drone images was faster than expected. Drone images are instances of the main image.
- As mentioned in the commentary, Arden’s measurements in experiment “C” included startup and shutdown of images—a conservative approach that may be atypical to how many use this technology. In experiment “B,” Arden tried hot images too, which saved even more time.
- MatriX (Polycephaly) has some nice features:
- If a developer had a dozen drone images running and lost their references and the ability to close them, closing the main image shuts everything down. Things like that save a lot of time, avoid aggravation and make it fun.
- If a developer started a local process, which in turn started a drone, then later terminated that process, the drone would be terminated.
- Remote errors are passed back to the main image.
In summarizing his presentation, Arden says:
“MatriX: a framework you can add for basic concurrency. It’s really easy and not hard to change your code to use it and receive big benefits. The return on investment is huge! MatriX gives you a big bang for your buck and a huge amount of improvement.”