Synchronization
lastmod 2025-12-24created 2014-11-3041 edits
When exchanging data between computers, matching the timing of the data's sending side and receiving side is called synchronization, and making it possible to be synchronized is called "achieving synchronization". In serial data transmission, where data is sent over one or two signal lines as in a communication circuit, the data is represented as a sequence of binary signals lined up in a row. Therefore, the signal side cannot use the data sent unless it identifies the boundaries between bits in time. For this reason, the sending side transmits synchronization information for identifying the bit boundaries. There are two ways to obtain this synchronization information: the start-stop system and the synchronous system. The start-stop system attaches a start bit at the beginning and a stop bit at the end of each character, synchronizing character by character. The synchronous system sends and receives data in step with a constant clock signal; at the start of communication, it transmits the data with synchronization characters prepended to identify the communication speed and method. Synchronization is an essential technique in multithreaded or multiprocess programming.
Categories
- Critical section
- Event
- Mutex
- Semaphore
- std::atomic (C++)
- Scala:Concurrency
- Fetch-and-add
- Compare-and-swap (CAS)
- Read-Copy-Update (RCU)
- Futex (Fast userspace mutex)
- Lock-free
- Reader-Writer lock
- Spinlock
- Blocking lock
- File lock
Projects
- Durable Streams - open protocol for real-time sync for client applications
Problem
Documentation
- For effective multi-threaded programming
-
For_effective_multi-threaded_programming.pdf - https://www.gitbook.com/book/bluekms21/femp/details
- https://bluekms21.gitbooks.io/femp/index.html
Concurrency control
- Wikipedia (en) description of Concurrency control
- [Recommended] Wikipedia (en) Category:Concurrency control
A summary of topics related to concurrency control.
- Double-Checked Lock
- SpinLock
- Busy waiting
- Lock convoy
- Busy spin
- Deadlock
- Seqlock
- Ticket lock
- Moniter
- Lock
- Read/Write Lock
- Non-blocking algorithm (Lock-Free algorithm)
- Non blocking algorithm
- Resource Acquisition Is Initialize (RAII)
- Synchronized Snapshot
- Blocking Queue
- Iterator vs Enumeration, Fail-fast vs Fail-safe
- Weakly Consistent
- Work stealing
- Immutable pattern
- Multiversion concurrency control (MVCC)
See also
Favorite site
- Wikipedia (en) description of Synchronization
- Naver Knowledge Encyclopedia description of synchronization
- [http://msdn.microsoft.com/en-us/library/windows/desktop/ms686364(v=vs.85.aspx Description of Win32 synchronization object types]
- Comparison of synchronization functions in Windows and Linux
- Synchronization objects : Critical Section, Mutex, Semaphore, Event 1
- About Critical Section, MUTEX, Semaphore 2
- Algorithm in the box.: Types of locking mechanisms 3
- GPG Study: Post: effective synchronization methods for iterators
- GPG Study: About synchronization when using STL
- Thread synchronization (C# Programming Guide)
- Solving multithreaded integrity issues with Fail-fast Iterators
- Enumeration & Iterator
- deque, work stealing
- Java reference: Package java.util.concurrent
- [Recommended] Why multithreaded programming is hard
- Season 2: Why is multithreaded programming so hard?
- [Recommended book] C++ Concurrency in Action: Practical Multithreading 4
- C++ Concurrency In Action
- C++ Concurrency in Action STUDY (Korean Github STUDY PAGE)
References
-
WindowsAPI-CriticalSection_Mutex_Semaphore_Event.pdf ↩
-
CriticalSection_MUTEX_Semaphore-Windows_example.pdf ↩
-
Algorithm_in_the_box_-_Type_of_locking_mechanism.pdf ↩
-
CplusplusConcurrencyInAction.pdf ↩
-
For_effective_multi-threaded_programming.pdf ↩
-
Concurrency-in-action-chapter-5.tar.gz ↩
-
Concurrency-in-action-chapter-7.tar.gz ↩