Thanks for all the good answers. I realize that the better approach would be to use the same data structure in both threads, while having different classes.
What I am actually trying to do is:
The main thread handles the game logic and works on the resources (reading/writing them). The auxiliary thread handles the display only, reading only from the resources.
I want at a later point to be able to either have the render thread:
1. either read from the original data while the game logic thread waits (thus avoiding copying the resources at all).
2. either read from a copy of the original data, while the game logic continues its work.
In case 2 above, copying the resources will be done as a light copy first (i.e. actually sharing the resource until the point where the main thread modifies it: in that case, the main thread will first deep-copy the resource before modifying it, while the render thread will still read from the old, unmodified resource, thus avoiding a crash).