IP Library Granted Patent US 7,761,414
Granted Patent B2
US 7,761,414 · App. 11/650,624 · Granted Jul 20, 2010

Asynchronous data synchronization amongst devices

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,761,414
App. No.
11/650,624
Granted
Jul 20, 2010
Kind
B2
Abstract

Systems, methods and computer readable media for synchronization tasks and non-synchronization tasks being executed concurrently. In one exemplary embodiment, a method includes executing at least one user-level non-synchronization processing thread and executing at least one synchronization processing thread concurrently with the executing of the at least one user-level non-synchronization processing thread. The at least one user-level non-synchronization processing thread may include operations to access a first database which is synchronized by the at least one synchronization processing thread during a synchronization operation between the first database on a first processing system and a second database on a second data processing system.

Claims (45)

1. A machine implemented method comprising:

executing at least one user-level non-synchronization processing thread, wherein the at least one user-level non-synchronization processing thread is provided by a user application which provides a user interface to allow a user to access and edit structured data in a first store associated with a first database; and

executing at least one synchronization processing thread concurrently with the executing of the at least one user-level non-synchronization processing thread, wherein the at least one synchronization processing thread is provided by a synchronization software component which is configured to synchronize the structured data from the first database with the structured data from a second database.

2. The method as in claim 1 , wherein the first database is in on a first data processing system, and wherein the at least one user-level non-synchronization processing thread includes operations to access the first database which is synchronized by the at least one synchronization processing thread with the second database on a second data processing system.

3. The method as in claim 2 wherein the first data processing system is a host and the second data processing system is a handheld device.

4. The method as in claim 1 wherein the synchronization software component acquires a lock on the first store.

5. The method as in claim 4 wherein the lock is a FLOCK Unix command.

6. The method as in claim 4 wherein the synchronization software component releases the lock after synchronization for a first data class is completed.

7. The method as in claim 6 wherein the first and the second data processing systems are synchronized in a peer-to-peer manner.

8. The method as in claim 1 wherein the synchronization software component attempts to acquire a lock on the first store, and if it fails, the synchronization software component sends a message to the user application to obtain the lock on the first store.

9. The method as in claim 8 wherein the synchronization software component cancels synchronization for at least one data class if the user application fails to release the lock on the first store.

10. The method as in claim 1 wherein the synchronization software component is configured to synchronize structured data of a first data class and other synchronization software components are configured to synchronize structured data of other corresponding data classes.

11. A computer readable storage medium containing executable program instructions which when executed cause a data processing system to perform a method comprising:

executing at least one user-level non-synchronization processing thread, wherein the at least one user-level non-synchronization processing thread is provided by a user application which provides a user interface to allow a user to access and edit structured data in a first store associated with a first database; and

executing at least one synchronization processing thread concurrently with the executing of the at least one user-level non-synchronization processing thread, wherein the at least one synchronization processing thread is provided by a synchronization software component which is configured to synchronize the structured data from the first database with the structured data from a second database.

12. The storage medium as in claim 11 wherein the first database is in on a first data processing system, and wherein the at least one user-level non-synchronization processing thread includes operations to access the first database which is synchronized by the at least one synchronization processing thread with the second database on a second data processing system.

13. The storage medium as in claim 12 wherein the first data processing system is a host and the second data processing system is a handheld device.

14. The storage medium as in claim 11 wherein the synchronization software component acquires a lock on the first store.

15. The storage medium as in claim 14 wherein the lock is a FLOCK Unix command.

16. The storage medium as in claim 14 wherein the synchronization software component releases the lock after synchronization for a first data class is completed.

17. The storage medium as in claim 16 wherein the first and the second data processing systems are synchronized in a peer-to-peer manner.

18. The storage medium as in claim 11 wherein the synchronization software component attempts to acquire a lock on the first store, and if it fails, the synchronization software component sends a message to the user application to obtain the lock on the first store.

19. The storage medium as in claim 18 wherein the synchronization software component cancels synchronization for at least one data class if the user application fails to release the lock on the first store.

20. The storage medium as in claim 11 wherein the synchronization software component is configured to synchronize structured data of a first data class and other synchronization software components are configured to synchronize structured data of other corresponding data classes.

21. A data processing system comprising:

means for executing at least one user-level non-synchronization processing thread that includes means for accessing structured data in a first store associated with a first database; and

means for executing at least one synchronization processing thread concurrently with the executing of the at least one user-level non-synchronization processing thread that includes means for synchronizing the structured data from the first database with the structured data from a second database.

22. The system as in claim 21 wherein the first database is in on a first data processing system, and wherein at least one user-level non-synchronization processing thread includes operations to access the first database which is synchronized by the at least one synchronization processing thread with the second database on a second data processing system.

23. A machine implemented method comprising:

executing at least one non-synchronization processing thread, wherein the at least one non-synchronization processing thread is provided by a user application which provides a user interface to allow a user to access and edit structured data in a first store associated with a first database; and

executing at least one synchronization processing thread concurrently with the executing of the at least one non-synchronization processing thread, wherein the at least one synchronization processing thread is provided by a synchronization software component which is configured synchronize the structured data from the first database with the structured data from a second database.

24. The method as in claim 23 wherein the first database is in on a first data processing system, and wherein the at least one non-synchronization processing thread includes operations to access the first database which is synchronized by the at least one synchronization processing thread with the second database on a second data processing system.

25. The method as in claim 24 wherein the first data processing system is a host and the second data processing system is a handheld device.

26. The method as in claim 23 wherein the synchronization software component acquires a lock on the first store.

27. A computer readable storage medium containing executable program instructions which when executed cause a data processing system to perform a method comprising:

executing at least one non-synchronization processing thread, wherein the at least one non-synchronization processing thread is provided by a user application which provides a user interface to allow a user to access and edit structured data in a first store associated with a first database; and

executing at least one synchronization processing thread concurrently with the executing of the at least one user-level non-synchronization processing thread, wherein the at least one synchronization processing thread is provided by a synchronization software component which is configured synchronize the structured data the first database with the structured data from a second database.

28. The storage medium as in claim 27 wherein the first database is in on a first data processing system, and wherein the at least one non-synchronization processing thread includes operations to access the first database which is synchronized by the at least one synchronization processing thread with the second database on a second data processing system.

29. The storage medium as in claim 28 wherein the first data processing system is a host and the second data processing system is a handheld device.

30. The storage medium as in claim 27 wherein the synchronization software component acquires a lock on the first store.

31. A data processing system comprising:

means for executing at least one non-synchronization processing thread that includes

means for accessing structured data in a first store associated with a first database; and

means for executing at least one synchronization processing thread concurrently with the executing of the at least one non-synchronization processing thread that includes means for synchronizing the structured data from the first database with the structured data from a second database.

32. The system as in claim 31 wherein the first database is in on a first data processing system, and wherein at least one non-synchronization processing thread includes operations to access the first database which is synchronized by the at least one synchronization processing thread with the second database on a second data processing system.

Assignments (2)
CHANGE OF NAME Recorded May 7, 2007
From: APPLE COMPUTER, INC., A CALIFORNIA CORPORATION
To: APPLE INC.
Reel/Frame 019281/0818 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 5, 2007
From: FREEDMAN, GORDON J.
To: APPLE COMPUTER, INC.
Reel/Frame 019141/0617 →