Misleading title, but Simon made a rather silly mistake when designing the LKSL, in that every object carries the overhead of having its own Thread Locking mechanisms.
While this is useful for when you really do need to ensure atomicity interacting with an object between multiple Threads, it makes absolutely no sense to have this overhead universally forced on the implementation. Not all implementations are going to require this feature.
It makes more sense to have a Base type, a Non-Thread-Safe implementation, and a Thread-Safe implementation for each relevant Type.
This solution will make it possible for the "implementing developer" (as Simon likes to call them) to determine for themselves whether they want to use a Thread-Safe or Non-Thread-Safe version of a given Type at every stage of their implementation.
Misleading title, but Simon made a rather silly mistake when designing the LKSL, in that every object carries the overhead of having its own Thread Locking mechanisms.
While this is useful for when you really do need to ensure atomicity interacting with an object between multiple Threads, it makes absolutely no sense to have this overhead universally forced on the implementation. Not all implementations are going to require this feature.
It makes more sense to have a Base type, a Non-Thread-Safe implementation, and a Thread-Safe implementation for each relevant Type.
This solution will make it possible for the "implementing developer" (as Simon likes to call them) to determine for themselves whether they want to use a Thread-Safe or Non-Thread-Safe version of a given Type at every stage of their implementation.