I am implementing a multi-process library that provides a data structure for shared memory.
But I am having trouble now, I modified the shared Hash object in the child process, but the parent process still has not read the changed value.
Sample code: https://play.crystal-lang.org/#/r/6n34
I don’t have much experience in this area. If anyone sees the problem, I hope you can help me.
FYI, 0.28 brings experimental support for multi-threading (#7546) and there are some shards like immutable fitting your use-case, but with multiple threads instead of forking. I’d wait a bit rather than fighting with such a low-level code
Just a note that that PR is about preparing the GC to work in a multithreaded context. Your program will still run in a single thread for now.
I say this to avoid raising everyone’s expectations. Multithreading will come, just not yet.
Answered to your StackOverflow crosspost: https://stackoverflow.com/a/55512196/2199687
Hope I got everything about right, never actually played with this stuff before myself :D
Great explanation and lovely ascii diagrams!
Can’t stop churning on the example code :D https://play.crystal-lang.org/#/r/6nfy
Anyone got an idea to prettify
(shared_data.to_unsafe + 1).value.prop = foo? Guess one could have a
SharedSlice wrapper struct with some convenience methods…