A machine implemented method for synchronization between a device and a host, wherein the device and the host are physically separated and a link software component maintains an authenticated connection link between the device and the host, thereby allowing passing of commands and data between the device and the host during the synchronization process, wherein - multiple different data classes are synchronized between the device and the host, the different data classes being structured data having different structures or formats; - the device includes one or more user application programs for accessing and editing structured data in a particular data class - both of the device and the host are able to have both non-synchronization processes and synchronization processes occurring concurrently, wherein the synchronization threads or processes are synchronization tasks performed by one or more synchronization software components such as Sync Agent the method comprises: - beginning the execution of synchronization software on both the device and the host while execution of non-synchronization threads or processes continues on both the device and the host - after performing the above step, the synchronization software of the device or the host carrying out the following sequence of steps a) acquiring a lock on a store for a data class which is to be synchronized b) determining if the lock was acquired c) if the lock is acquired, beginning synchronizing for the currently processed data class d) if the lock is not acquired notifying the application which uses the currently processed data class that the synchronization component requests the lock and the synchronization component waits for a response e) if the lock is not acquired after the notification, cancelling synchronizing of the current data class, and if further data classes need to be synchronized, proceeding to step a) for further data classes, and if there are no further classes that need to be synchronized ending the process f) if a response is received from the application indicating that the lock is acquired, beginning synchronizing for the currently processed data class h) after synchronization for the current data class is completed, releasing the lock i) if at least one data class still remains to be synchronized proceeding back to step a) and if there are no more data classes to be synchronized, ending the process. - multiple different data classes are synchronized between the device and the host, the different data classes being structured data having different structures or formats; - the device includes one or more user application programs for accessing and editing structured data in a particular data class - both of the device and the host are able to have both non-synchronization processes and synchronization processes occurring concurrently, wherein the synchronization threads or processes are synchronization tasks performed by one or more synchronization software components such as Sync Agent - beginning the execution of synchronization software on both the device and the host while execution of non-synchronization threads or processes continues on both the device and the host - after performing the above step, the synchronization software of the device or the host carrying out the following sequence of steps a) acquiring a lock on a store for a data class which is to be synchronized b) determining if the lock was acquired c) if the lock is acquired, beginning synchronizing for the currently processed data class d) if the lock is not acquired notifying the application which uses the currently processed data class that the synchronization component requests the lock and the synchronization component waits for a response e) if the lock is not acquired after the notification, cancelling synchronizing of the current data class, and if further data classes need to be synchronized, proceeding to step a) for further data classes, and if there are no further classes that need to be synchronized ending the process f) if a response is received from the application indicating that the lock is acquired, beginning synchronizing for the currently processed data class h) after synchronization for the current data class is completed, releasing the lock i) if at least one data class still remains to be synchronized proceeding back to step a) and if there are no more data classes to be synchronized, ending the process. a) acquiring a lock on a store for a data class which is to be synchronized b) determining if the lock was acquired c) if the lock is acquired, beginning synchronizing for the currently processed data class d) if the lock is not acquired notifying the application which uses the currently processed data class that the synchronization component requests the lock and the synchronization component waits for a response e) if the lock is not acquired after the notification, cancelling synchronizing of the current data class, and if further data classes need to be synchronized, proceeding to step a) for further data classes, and if there are no further classes that need to be synchronized ending the process f) if a response is received from the application indicating that the lock is acquired, beginning synchronizing for the currently processed data class h) after synchronization for the current data class is completed, releasing the lock i) if at least one data class still remains to be synchronized proceeding back to step a) and if there are no more data classes to be synchronized, ending the process.