Today there are much more RAM available than in old day and I see that devs are tend to go from multi-threading to multi-processing.
Here good Multi-process Architecture argumentation from Chrome devs:
In this world, browsers that put everything in one process face real challenges for robustness, responsiveness, and security. If one web app causes a crash in the rendering engine, it will take the rest of the browser with it, including any other web apps that are open. Web apps often have to compete with each other for CPU time on a single thread, sometimes causing the entire browser to become unresponsive.
Security is also a concern, because a web page that exploits a vulnerability in the rendering engine can often take over your entire computer.
So multi-processing pros:
- Isolation that will mean robustness and security. (I think we can argue about responsiveness because it is not so hard to make good responsiveness with correct multi-thread and thread pool management)
Cons:
- Memory overhead
- Greater start time
If we will speak not in browser context we will tend to put any 3d party lib in the separate process. Because we can't be sure that this lib will not crash us, hang us or will not insecure our data. There some alternative to multi-process approach like AppDomains concept in .NET. But they are unable to provide needed robustness with flexibility because it works only with managed code, not with native. I think that is true for any other software framework.
So how do you think, is the multi-process architecture at least for 3d-party libs is reasonable choice or it is evil and the result of programmers laziness, their desires to simplify to itself life?