Typically you derive from TSharedAttribute and TInternalAttribute in pairs. If you derive from TSharedAttribute, you must also derive from TInternalAttribute and implement attribute-specific behavior.
It is not possible to use TSharedAttribute directly with your own internal attribute. You need to derive from both.
TSharedAttribute is not synchronized and therefore not multithread safe. Figure 48 shows the public and protected member functions for TSharedAttribute.