{"id":2602,"date":"2025-06-06T10:34:10","date_gmt":"2025-06-06T10:34:10","guid":{"rendered":"https:\/\/diznr.com\/?p=2602"},"modified":"2025-06-06T10:34:10","modified_gmt":"2025-06-06T10:34:10","slug":"three-terminologies-of-happened-before-clock-transition-causal-ordering-concurrent-and","status":"publish","type":"post","link":"https:\/\/www.reilsolar.com\/pdf\/three-terminologies-of-happened-before-clock-transition-causal-ordering-concurrent-and\/","title":{"rendered":"Three terminologies of Happened before Clock Transition-Causal Ordering and Concurrent"},"content":{"rendered":"<p>Three terminologies of Happened before Clock Transition Causal Ordering and Concurrent.<\/p>\n<p><span style=\"color: #ffffff\">Happened Before Or Causal Precedence Logical Clocks And Causal Ordering Logical Time Lamport Clocks Causal Relationships In Distributed Computations Lamport Timestamp Distributed Systems Clocks Algorithms In Distributed Computing.<\/span><\/p>\n<p>[fvplayer id=&#8221;80&#8243;]<\/p>\n<p><span style=\"color: #ffffff\">Causal Ordering Of Messages In Distributed System Which Event Is Concurrent With The Vector Clock Causal Ordering Example Lamport Clock Example Time, Clocks And The Ordering Of Events In A Distributed System Lamport Clock Vs Vector Clock.<\/span><\/p>\n<h3 data-start=\"0\" data-end=\"125\"><strong data-start=\"4\" data-end=\"123\">Three Key Terminologies in Distributed Systems: Happened Before, Clock Transition, Causal Ordering, and Concurrency<\/strong><\/h3>\n<p data-start=\"127\" data-end=\"368\">In <strong data-start=\"130\" data-end=\"153\">distributed systems<\/strong>, events occur in different processes that may not share a common clock. To understand the sequence of events, we use concepts like <strong data-start=\"285\" data-end=\"366\">happened-before relation, clock transition, causal ordering, and concurrency.<\/strong><\/p>\n<h3 data-start=\"375\" data-end=\"443\"><strong data-start=\"379\" data-end=\"443\">\u00a0Happened Before (\u2192) Relation (Lamport&#8217;s Happened-Before)<\/strong><\/h3>\n<ul data-start=\"444\" data-end=\"997\">\n<li data-start=\"444\" data-end=\"551\">Defined by <strong data-start=\"457\" data-end=\"475\">Leslie Lamport<\/strong>, this relation helps establish an order of events in distributed systems.<\/li>\n<li data-start=\"552\" data-end=\"619\"><strong data-start=\"554\" data-end=\"568\">Denoted as<\/strong>: <span class=\"katex\"><span class=\"katex-mathml\">A\u2192BA \\to B<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">A<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">B<\/span><\/span><\/span><\/span> (Event A happened before Event B)<\/li>\n<li data-start=\"620\" data-end=\"997\"><strong data-start=\"622\" data-end=\"632\">Rules:<\/strong>\n<ol data-start=\"637\" data-end=\"997\">\n<li data-start=\"637\" data-end=\"779\"><strong data-start=\"640\" data-end=\"661\">Same process rule<\/strong>: If two events occur in the same process, the one that appears earlier in execution order happens before the other.<\/li>\n<li data-start=\"782\" data-end=\"916\"><strong data-start=\"785\" data-end=\"809\">Message passing rule<\/strong>: If event A is a send message event, and event B is the corresponding receive event, then <span class=\"katex\"><span class=\"katex-mathml\">A\u2192BA \\to B<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">A<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">B<\/span><\/span><\/span><\/span>.<\/li>\n<li data-start=\"919\" data-end=\"997\"><strong data-start=\"922\" data-end=\"938\">Transitivity<\/strong>: If <span class=\"katex\"><span class=\"katex-mathml\">A\u2192BA \\to B<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">A<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">B<\/span><\/span><\/span><\/span> and <span class=\"katex\"><span class=\"katex-mathml\">B\u2192CB \\to C<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">B<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">C<\/span><\/span><\/span><\/span>, then <span class=\"katex\"><span class=\"katex-mathml\">A\u2192CA \\to C<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">A<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">C<\/span><\/span><\/span><\/span>.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<p data-start=\"999\" data-end=\"1132\"><strong data-start=\"1002\" data-end=\"1014\">Example:<\/strong> If Process P1 sends a message to Process P2, then the &#8220;send event&#8221; in P1 happened before the &#8220;receive event&#8221; in P2.<\/p>\n<h3 data-start=\"1139\" data-end=\"1200\"><strong data-start=\"1143\" data-end=\"1200\">\u00a0Clock Transition (Logical Clocks &amp; Vector Clocks)<\/strong><\/h3>\n<ul data-start=\"1201\" data-end=\"1708\">\n<li data-start=\"1201\" data-end=\"1325\">In distributed systems, <strong data-start=\"1227\" data-end=\"1270\">physical clocks may not be synchronized<\/strong>, so logical clocks are used to track event ordering.<\/li>\n<li data-start=\"1326\" data-end=\"1708\"><strong data-start=\"1328\" data-end=\"1353\">Two main clock types:<\/strong>\n<ul data-start=\"1358\" data-end=\"1708\">\n<li data-start=\"1358\" data-end=\"1525\"><strong data-start=\"1360\" data-end=\"1399\">Logical Clocks (Lamport Timestamps)<\/strong>: Each process maintains a counter that increments for each event. Message passing updates the receiver&#8217;s clock accordingly.<\/li>\n<li data-start=\"1528\" data-end=\"1708\"><strong data-start=\"1530\" data-end=\"1547\">Vector Clocks<\/strong>: Each process maintains an array of counters representing the logical time of all processes. This captures causality more effectively than Lamport timestamps.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p data-start=\"1710\" data-end=\"1727\"><strong data-start=\"1713\" data-end=\"1725\">Example:<\/strong><\/p>\n<ul data-start=\"1730\" data-end=\"1972\">\n<li data-start=\"1730\" data-end=\"1843\">If P1 executes an event at <strong data-start=\"1759\" data-end=\"1766\">T=5<\/strong> and sends a message, P2 may adjust its time based on received information.<\/li>\n<li data-start=\"1846\" data-end=\"1972\">If P1\u2019s timestamp is <strong data-start=\"1869\" data-end=\"1876\">T=5<\/strong> and P2\u2019s was <strong data-start=\"1890\" data-end=\"1897\">T=3<\/strong>, after receiving the message, P2 updates its time to <strong data-start=\"1951\" data-end=\"1969\">T=max(5,3)+1=6<\/strong>.<\/li>\n<\/ul>\n<h3 data-start=\"1979\" data-end=\"2022\"><strong data-start=\"1983\" data-end=\"2020\">\u00a0Causal Ordering &amp; Concurrency<\/strong><\/h3>\n<ul data-start=\"2023\" data-end=\"2372\">\n<li data-start=\"2023\" data-end=\"2201\"><strong data-start=\"2025\" data-end=\"2045\">Causal Ordering:<\/strong> Ensures that events are delivered in the order they were causally related. If <span class=\"katex\"><span class=\"katex-mathml\">A\u2192BA \\to B<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">A<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">B<\/span><\/span><\/span><\/span>, then B cannot happen before A in any observer\u2019s perspective.<\/li>\n<li data-start=\"2202\" data-end=\"2372\"><strong data-start=\"2204\" data-end=\"2223\">Concurrency (\u2016)<\/strong>: If neither <span class=\"katex\"><span class=\"katex-mathml\">A\u2192BA \\to B<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">A<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">B<\/span><\/span><\/span><\/span> nor <span class=\"katex\"><span class=\"katex-mathml\">B\u2192AB \\to A<\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"mord mathnormal\">B<\/span><span class=\"mrel\">\u2192<\/span><\/span><span class=\"base\"><span class=\"mord mathnormal\">A<\/span><\/span><\/span><\/span>, then A and B are <strong data-start=\"2286\" data-end=\"2307\">concurrent events<\/strong>. This means they are independent and do not affect each other.<\/li>\n<\/ul>\n<p data-start=\"2374\" data-end=\"2391\"><strong data-start=\"2377\" data-end=\"2389\">Example:<\/strong><\/p>\n<ul data-start=\"2392\" data-end=\"2608\">\n<li data-start=\"2392\" data-end=\"2498\">If P1 sends a message to P2 and then P2 responds, the second event is causally dependent on the first.<\/li>\n<li data-start=\"2499\" data-end=\"2608\">If P1 and P2 perform independent computations <strong data-start=\"2547\" data-end=\"2572\">without communicating<\/strong>, their events are <strong data-start=\"2591\" data-end=\"2605\">concurrent<\/strong>.<\/li>\n<\/ul>\n<h3 data-start=\"2615\" data-end=\"2638\"><strong data-start=\"2619\" data-end=\"2636\">Summary Table<\/strong><\/h3>\n<div class=\"overflow-x-auto contain-inline-size\">\n<table data-start=\"2640\" data-end=\"3275\">\n<thead data-start=\"2640\" data-end=\"2674\">\n<tr data-start=\"2640\" data-end=\"2674\">\n<th data-start=\"2640\" data-end=\"2650\">Concept<\/th>\n<th data-start=\"2650\" data-end=\"2663\">Definition<\/th>\n<th data-start=\"2663\" data-end=\"2674\">Example<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2710\" data-end=\"3275\">\n<tr data-start=\"2710\" data-end=\"2861\">\n<td><strong data-start=\"2712\" data-end=\"2735\">Happened Before (\u2192)<\/strong><\/td>\n<td>Defines a partial order of events in distributed systems.<\/td>\n<td>A process sends a message before another process receives it.<\/td>\n<\/tr>\n<tr data-start=\"2862\" data-end=\"2988\">\n<td><strong data-start=\"2864\" data-end=\"2884\">Clock Transition<\/strong><\/td>\n<td>Logical clocks update based on event ordering.<\/td>\n<td>Lamport timestamp updates to maintain event order.<\/td>\n<\/tr>\n<tr data-start=\"2989\" data-end=\"3142\">\n<td><strong data-start=\"2991\" data-end=\"3010\">Causal Ordering<\/strong><\/td>\n<td>Ensures messages\/events are delivered in a causal sequence.<\/td>\n<td>A reply to a message must be received after the original message.<\/td>\n<\/tr>\n<tr data-start=\"3143\" data-end=\"3275\">\n<td><strong data-start=\"3145\" data-end=\"3164\">Concurrency (\u2016)<\/strong><\/td>\n<td>Events are independent if they do not causally affect each other.<\/td>\n<td>Two processes computing independently.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3 data-start=\"3282\" data-end=\"3302\"><strong data-start=\"3286\" data-end=\"3300\">Conclusion<\/strong><\/h3>\n<p data-start=\"3303\" data-end=\"3465\" data-is-last-node=\"\" data-is-only-node=\"\">These concepts are essential for ensuring <strong data-start=\"3345\" data-end=\"3373\">correct event sequencing<\/strong> in distributed systems, preventing inconsistencies, and maintaining system synchronization.<\/p>\n<p data-start=\"0\" data-end=\"153\">Here\u2019s a clear and concise explanation of the <strong data-start=\"46\" data-end=\"81\">three fundamental terminologies<\/strong> used in <strong data-start=\"90\" data-end=\"113\">distributed systems<\/strong> related to <strong data-start=\"125\" data-end=\"152\">event ordering and time<\/strong>:<\/p>\n<hr data-start=\"155\" data-end=\"158\" \/>\n<h2 data-start=\"160\" data-end=\"202\">\u23f0 <strong data-start=\"165\" data-end=\"202\">1. Happened-Before Relation (<code data-start=\"196\" data-end=\"199\">\u2192<\/code>)<\/strong><\/h2>\n<p data-start=\"204\" data-end=\"366\">The <strong data-start=\"208\" data-end=\"227\">Happened-Before<\/strong> relation, introduced by <strong data-start=\"252\" data-end=\"270\">Leslie Lamport<\/strong>, is a way to <strong data-start=\"284\" data-end=\"314\">define the order of events<\/strong> in a distributed system <strong data-start=\"339\" data-end=\"365\">without a global clock<\/strong>.<\/p>\n<h3 data-start=\"368\" data-end=\"386\">\ud83d\udccc Definition:<\/h3>\n<p data-start=\"387\" data-end=\"428\">Event <strong data-start=\"393\" data-end=\"402\">A \u2192 B<\/strong> (A happened before B) if:<\/p>\n<ul data-start=\"429\" data-end=\"646\">\n<li data-start=\"429\" data-end=\"491\">\n<p data-start=\"431\" data-end=\"491\"><strong data-start=\"431\" data-end=\"468\">A and B occur in the same process<\/strong>, and A comes before B.<\/p>\n<\/li>\n<li data-start=\"492\" data-end=\"580\">\n<p data-start=\"494\" data-end=\"580\"><strong data-start=\"494\" data-end=\"515\">A is a send event<\/strong> and B is the corresponding <strong data-start=\"543\" data-end=\"560\">receive event<\/strong> in another process.<\/p>\n<\/li>\n<li data-start=\"581\" data-end=\"646\">\n<p data-start=\"583\" data-end=\"646\">The relation is <strong data-start=\"599\" data-end=\"613\">transitive<\/strong>: If A \u2192 B and B \u2192 C, then A \u2192 C.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"648\" data-end=\"663\">\ud83d\udd27 Example:<\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">vbnet<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-symbol\">P1:<\/span> A \u2192 B \u2192 C<br \/>\n<span class=\"hljs-symbol\">P2:<\/span>       D \u2192 E<br \/>\n\u2191<br \/>\nmessage sent <span class=\"hljs-keyword\">from<\/span> B <span class=\"hljs-keyword\">to<\/span> D<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"749\" data-end=\"792\">Here, A \u2192 B \u2192 D because of message passing.<\/p>\n<hr data-start=\"794\" data-end=\"797\" \/>\n<h2 data-start=\"799\" data-end=\"845\">\ud83d\udd52 <strong data-start=\"805\" data-end=\"845\">2. Clock Transition \/ Logical Clocks<\/strong><\/h2>\n<p data-start=\"847\" data-end=\"1031\">Since physical clocks can\u2019t be perfectly synchronized in distributed systems, we use <strong data-start=\"932\" data-end=\"950\">logical clocks<\/strong> (like <strong data-start=\"957\" data-end=\"975\">Lamport Clocks<\/strong> or <strong data-start=\"979\" data-end=\"996\">Vector Clocks<\/strong>) to <strong data-start=\"1001\" data-end=\"1030\">track the order of events<\/strong>.<\/p>\n<h3 data-start=\"1033\" data-end=\"1067\">\u2705 Lamport Logical Clock Rules:<\/h3>\n<ol data-start=\"1068\" data-end=\"1300\">\n<li data-start=\"1068\" data-end=\"1124\">\n<p data-start=\"1071\" data-end=\"1124\">Every process increments its clock before each event.<\/p>\n<\/li>\n<li data-start=\"1125\" data-end=\"1200\">\n<p data-start=\"1128\" data-end=\"1200\">When a process sends a message, it <strong data-start=\"1163\" data-end=\"1199\">includes its current clock value<\/strong>.<\/p>\n<\/li>\n<li data-start=\"1201\" data-end=\"1300\">\n<p data-start=\"1204\" data-end=\"1300\">On receiving a message, the receiver sets its clock to <strong data-start=\"1259\" data-end=\"1299\">max(local clock, received clock) + 1<\/strong>.<\/p>\n<\/li>\n<\/ol>\n<h3 data-start=\"1302\" data-end=\"1314\">Purpose:<\/h3>\n<p data-start=\"1315\" data-end=\"1415\">Helps assign a <strong data-start=\"1330\" data-end=\"1343\">timestamp<\/strong> to each event such that <strong data-start=\"1368\" data-end=\"1414\">if A \u2192 B, then timestamp(A) &lt; timestamp(B)<\/strong>.<\/p>\n<hr data-start=\"1417\" data-end=\"1420\" \/>\n<h2 data-start=\"1422\" data-end=\"1472\">\ud83d\udd04 <strong data-start=\"1428\" data-end=\"1472\">3. Causal Ordering and Concurrent Events<\/strong><\/h2>\n<h3 data-start=\"1474\" data-end=\"1500\">\u27a4 <strong data-start=\"1480\" data-end=\"1499\">Causal Ordering<\/strong>:<\/h3>\n<p data-start=\"1501\" data-end=\"1559\">Event A is said to <strong data-start=\"1520\" data-end=\"1539\">causally affect<\/strong> event B (A \u2192 B) if:<\/p>\n<ul data-start=\"1560\" data-end=\"1727\">\n<li data-start=\"1560\" data-end=\"1645\">\n<p data-start=\"1562\" data-end=\"1645\">There is a <strong data-start=\"1573\" data-end=\"1602\">cause-effect relationship<\/strong> (e.g., A sends a message that B receives).<\/p>\n<\/li>\n<li data-start=\"1646\" data-end=\"1727\">\n<p data-start=\"1648\" data-end=\"1727\">All processes must respect the <strong data-start=\"1679\" data-end=\"1702\">causal relationship<\/strong> while delivering events.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"1729\" data-end=\"1768\">\u27a4 <strong data-start=\"1735\" data-end=\"1767\">Concurrent Events (<code data-start=\"1756\" data-end=\"1764\">A || B<\/code>)<\/strong>:<\/h3>\n<p data-start=\"1769\" data-end=\"1802\">Two events are <strong data-start=\"1784\" data-end=\"1798\">concurrent<\/strong> if:<\/p>\n<ul data-start=\"1803\" data-end=\"1906\">\n<li data-start=\"1803\" data-end=\"1840\">\n<p data-start=\"1805\" data-end=\"1840\">Neither A \u2192 B nor B \u2192 A holds true.<\/p>\n<\/li>\n<li data-start=\"1841\" data-end=\"1906\">\n<p data-start=\"1843\" data-end=\"1906\">They happen <strong data-start=\"1855\" data-end=\"1872\">independently<\/strong> and <strong data-start=\"1877\" data-end=\"1905\">cannot affect each other<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"1908\" data-end=\"1923\">\ud83d\udca1 Example:<\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">less<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\"><span class=\"hljs-selector-tag\">Event<\/span> <span class=\"hljs-selector-tag\">A<\/span> (in P1) <span class=\"hljs-selector-tag\">and<\/span> <span class=\"hljs-selector-tag\">Event<\/span> <span class=\"hljs-selector-tag\">B<\/span> (in P2) <span class=\"hljs-selector-tag\">are<\/span> <span class=\"hljs-selector-tag\">concurrent<\/span> <span class=\"hljs-selector-tag\">if<\/span>:<br \/>\n<span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">A<\/span> <span class=\"hljs-selector-tag\">does<\/span> <span class=\"hljs-selector-tag\">not<\/span> <span class=\"hljs-selector-tag\">send<\/span> <span class=\"hljs-selector-tag\">a<\/span> <span class=\"hljs-selector-tag\">message<\/span> <span class=\"hljs-selector-tag\">to<\/span> <span class=\"hljs-selector-tag\">B<\/span><br \/>\n<span class=\"hljs-selector-tag\">-<\/span> <span class=\"hljs-selector-tag\">B<\/span> <span class=\"hljs-selector-tag\">does<\/span> <span class=\"hljs-selector-tag\">not<\/span> <span class=\"hljs-selector-tag\">send<\/span> <span class=\"hljs-selector-tag\">a<\/span> <span class=\"hljs-selector-tag\">message<\/span> <span class=\"hljs-selector-tag\">to<\/span> <span class=\"hljs-selector-tag\">A<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"2054\" data-end=\"2057\" \/>\n<h2 data-start=\"2059\" data-end=\"2078\">\ud83e\udde0 Summary Table<\/h2>\n<div class=\"_tableContainer_16hzy_1\">\n<div class=\"_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"2080\" data-end=\"2676\">\n<thead data-start=\"2080\" data-end=\"2177\">\n<tr data-start=\"2080\" data-end=\"2177\">\n<th data-start=\"2080\" data-end=\"2102\" data-col-size=\"sm\">Term<\/th>\n<th data-start=\"2102\" data-end=\"2177\" data-col-size=\"md\">Meaning<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2276\" data-end=\"2676\">\n<tr data-start=\"2276\" data-end=\"2375\">\n<td data-start=\"2276\" data-end=\"2302\" data-col-size=\"sm\"><strong data-start=\"2278\" data-end=\"2301\">Happened-Before (\u2192)<\/strong><\/td>\n<td data-col-size=\"md\" data-start=\"2302\" data-end=\"2375\">Defines causal relationship between events in distributed systems<\/td>\n<\/tr>\n<tr data-start=\"2376\" data-end=\"2477\">\n<td data-start=\"2376\" data-end=\"2407\" data-col-size=\"sm\"><strong data-start=\"2378\" data-end=\"2406\">Logical Clock Transition<\/strong><\/td>\n<td data-col-size=\"md\" data-start=\"2407\" data-end=\"2477\">Timestamps events to respect happened-before relations<\/td>\n<\/tr>\n<tr data-start=\"2478\" data-end=\"2575\">\n<td data-start=\"2478\" data-end=\"2501\" data-col-size=\"sm\"><strong data-start=\"2480\" data-end=\"2499\">Causal Ordering<\/strong><\/td>\n<td data-col-size=\"md\" data-start=\"2501\" data-end=\"2575\">Ensures messages are delivered in the order they causally occur<\/td>\n<\/tr>\n<tr data-start=\"2576\" data-end=\"2676\">\n<td data-start=\"2576\" data-end=\"2599\" data-col-size=\"sm\">**Concurrent Events (<\/td>\n<td data-col-size=\"md\" data-start=\"2599\" data-end=\"2600\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sticky end-(--thread-content-margin) h-0 self-end select-none\">\n<div class=\"absolute end-0 flex items-end\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"2678\" data-end=\"2681\" \/>\n<p data-start=\"2683\" data-end=\"2786\" data-is-last-node=\"\" data-is-only-node=\"\">Would you like a <strong data-start=\"2700\" data-end=\"2711\">diagram<\/strong> showing the difference between these relations using processes and events?<\/p>\n<h3 data-start=\"2683\" data-end=\"2786\"><a href=\"https:\/\/lamport.azurewebsites.net\/pubs\/time-clocks.pdf\" target=\"_blank\" rel=\"noopener\">Three terminologies of Happened before Clock Transition-Causal Ordering and Concurrent<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/amturing.acm.org\/p558-lamport.pdf\" target=\"_blank\" rel=\"noopener\">Time, clocks, and the ordering of events in a distributed system<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/pages.cs.wisc.edu\/~dusseau\/Classes\/CS739-S06\/Writeups\/time.pdf\" target=\"_blank\" rel=\"noopener\">Ordering of Events in Distributed Systems Motivation &#8230;<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"http:\/\/elearn.psgcas.ac.in\/nptel\/courses\/video\/106106168\/lec4.pdf\" target=\"_blank\" rel=\"noopener\">Lecture 4: Models of Distributed Computation, Causality &#8230;<\/a><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>Three terminologies of Happened before Clock Transition Causal Ordering and Concurrent.<\/p>\n","protected":false},"author":64,"featured_media":2604,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84],"tags":[1626,1627,1628,1629,1630,1631,1632,1590,1633,1634,1635,1636,1637,1638,1639],"class_list":["post-2602","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-distributed-computing","tag-algorithms-in-distributed-computing","tag-causal-ordering-example","tag-causal-ordering-of-messages-in-distributed-system","tag-causal-relationships-in-distributed-computations","tag-clocks-and-the-ordering-of-events-in-a-distributed-system","tag-distributed-systems-clocks","tag-happened-before-or-causal-precedence","tag-lamport-clock-example","tag-lamport-clock-vs-vector-clock","tag-lamport-clocks","tag-lamport-timestamp","tag-logical-clocks-and-causal-ordering","tag-logical-time","tag-time","tag-which-event-is-concurrent-with-the-vector-clock"],"_links":{"self":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/comments?post=2602"}],"version-history":[{"count":0,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2602\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/media\/2604"}],"wp:attachment":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/media?parent=2602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/categories?post=2602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/tags?post=2602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}