Thank you very much. I already readed this excellent article. Unfortunately, sometimes we need things that should be global and shared between threads. As far as I understand it is desirable to avoid casting to/from shared. It will be better to use something like this
shared char[] s; shared static this() { s ~= "shared text"; }
instead
shared char[] s = cast(shared)"shared".dup;