Supporting Concurrent Synchronization Tasks
Sync Framework enables users to build providers that can support concurrent synchronization tasks. However, it does not support parallel synchronization by using the same session object. To develop a concurrent synchronization-enabled provider, use the following guidelines:
The provider must provide safeguards for locking and unlocking knowledge during calls.
Knowledge must be cloned to enable Sync Framework to combine it from a different thread. To logically clone a knowledge object, follow these steps before you return a knowledge object to Sync Framework:
Create a new knowledge object.
Set the local tick count to 1.
Combine the existing knowledge with this new object by using ISyncKnowledge::Union.
Pass the cloned knowledge to Sync Framework.
For multithreaded applications, Sync Framework requires that providers be compatible with the apartment in which the ISyncSession object is running. This restriction also applies for all objects that are passed to Sync Framework, such as versions, knowledge, and so on.