<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Sinkronisasi on Nalar</title>
    <link>https://nalar.dev/id/tags/sinkronisasi/</link>
    <description>Recent content in Sinkronisasi on Nalar</description>
    <generator>Hugo</generator>
    <language>id-id</language>
    <lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://nalar.dev/id/tags/sinkronisasi/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Fencing Token Menutup Celah Writer dari Lease Kedaluwarsa</title>
      <link>https://nalar.dev/id/fencing-token-menutup-celah-writer-lease-kedaluwarsa/</link>
      <pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/fencing-token-menutup-celah-writer-lease-kedaluwarsa/</guid>
      <description>&lt;p&gt;Lease terdistribusi dapat kedaluwarsa ketika pemegangnya tidak dapat berjalan. Pemegang tersebut kemudian dapat aktif lagi dengan state lokal yang masih menyatakan bahwa lease dimilikinya, padahal client lain sudah memperoleh lease yang lebih baru. Jika storage atau service yang dilindungi menerima operasi hanya karena client pernah memperoleh lease, dua client dapat memutasi resource yang sama pada titik waktu berbeda.&lt;/p&gt;&#xA;&lt;p&gt;Fencing token memindahkan pemeriksaan penentu dari kepemilikan lease ke resource yang dilindungi. Setiap akuisisi yang berhasil memperoleh token yang berurutan setelah semua token sebelumnya. Resource mencatat token terbesar yang pernah diterima dan menolak operasi dengan nilai lebih lama. Lease tetap mengoordinasikan akuisisi, sedangkan token membatasi tindakan pemegang lama yang terlambat setelah kembali aktif.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sequence Counter Mendeteksi Write Konkuren Tanpa Lock pada Reader</title>
      <link>https://nalar.dev/id/sequence-counter-mendeteksi-write-konkuren-tanpa-lock-reader/</link>
      <pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/sequence-counter-mendeteksi-write-konkuren-tanpa-lock-reader/</guid>
      <description>&lt;p&gt;Sequence counter dapat memungkinkan reader menyalin shared state tanpa mengambil lock milik writer. Reader mengambil nilai counter, menyalin field yang dilindungi, lalu mengambil nilai counter sekali lagi. Nilai genap yang sama pada kedua observasi menandakan tidak ada writer yang overlap dengan proses penyalinan berdasarkan kontrak sinkronisasi. Nilai yang berubah atau ganjil memaksa reader membuang snapshot dan mengulang operasi.&lt;/p&gt;&#xA;&lt;p&gt;Pola ini memindahkan pekerjaan dari kepemilikan lock pada sisi reader, tetapi tidak menghapus sinkronisasi. Writer tetap memerlukan serialisasi, transisi counter memerlukan semantik memory ordering yang terdefinisi, dan data yang dilindungi harus tetap aman diakses selama write yang overlap. Constraint tersebut membuat sequence counter cocok untuk sebagian snapshot yang dominan dibaca, tetapi tidak aman untuk data yang lifetime-nya dapat berakhir saat reader masih mengaksesnya.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go sync.Cond Wait Memeriksa Ulang Shared State</title>
      <link>https://nalar.dev/id/go-sync-cond-wait-memeriksa-ulang-shared-state/</link>
      <pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/go-sync-cond-wait-memeriksa-ulang-shared-state/</guid>
      <description>&lt;p&gt;&lt;code&gt;sync.Cond.Wait&lt;/code&gt; melanjutkan eksekusi setelah notification, tetapi notification tidak menyatakan bahwa kondisi khusus milik caller masih true ketika goroutine memperoleh lock kembali. Shared predicate tetap menjadi source of truth, sehingga waiter memeriksanya lagi setiap kali &lt;code&gt;Wait&lt;/code&gt; kembali.&lt;/p&gt;&#xA;&lt;p&gt;Boundary ini memisahkan notification dari state. &lt;code&gt;Signal&lt;/code&gt; dan &lt;code&gt;Broadcast&lt;/code&gt; mengumumkan bahwa state yang relevan mungkin telah berubah; keduanya tidak memindahkan ownership state tersebut atau memesannya untuk waiter tertentu.&lt;/p&gt;&#xA;&lt;h2 id=&#34;wait-membuka-lock-lalu-memperolehnya-kembali&#34;&gt;Wait membuka lock lalu memperolehnya kembali&lt;/h2&gt;&#xA;&lt;p&gt;Sebuah &lt;code&gt;Cond&lt;/code&gt; terkait dengan &lt;code&gt;Locker&lt;/code&gt;, umumnya &lt;code&gt;*sync.Mutex&lt;/code&gt;. Caller memegang lock tersebut saat memeriksa shared state. Jika predicate false, &lt;code&gt;Wait&lt;/code&gt; secara atomik membuka locker dan menangguhkan caller. Sebelum &lt;code&gt;Wait&lt;/code&gt; kembali, ia mengunci locker lagi.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reuse Go WaitGroup Memerlukan Boundary Wait yang Sudah Selesai</title>
      <link>https://nalar.dev/id/reuse-go-waitgroup-memerlukan-boundary-wait-yang-sudah-selesai/</link>
      <pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://nalar.dev/id/reuse-go-waitgroup-memerlukan-boundary-wait-yang-sudah-selesai/</guid>
      <description>&lt;p&gt;&lt;code&gt;sync.WaitGroup&lt;/code&gt; dapat digunakan kembali setelah sebuah wait phase selesai, tetapi task set independen baru tidak boleh dimulai selama call &lt;code&gt;Wait&lt;/code&gt; dari phase sebelumnya masih aktif. Boundary-nya adalah return dari setiap &lt;code&gt;Wait&lt;/code&gt; sebelumnya, bukan sekadar saat internal task counter mencapai nol.&lt;/p&gt;&#xA;&lt;p&gt;Constraint ini penting ketika satu instance &lt;code&gt;WaitGroup&lt;/code&gt; dipertahankan lintas batch, epoch, request wave, atau coordination cycle berulang. Reuse didukung, tetapi phase tidak boleh overlap pada transisi counter dari nol menjadi positif.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
