{"id":5218,"date":"2025-01-04T11:26:06","date_gmt":"2025-01-04T04:26:06","guid":{"rendered":"https:\/\/www.linuxid.net\/istilah\/?p=5218"},"modified":"2025-02-03T23:53:09","modified_gmt":"2025-02-03T16:53:09","slug":"mutual-exclusion-mutex","status":"publish","type":"post","link":"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/","title":{"rendered":"mutual exclusion (mutex)"},"content":{"rendered":"<h2>Apa itu Mutual Exclusion (Mutex)?<\/h2>\n<p>Dalam pemrograman komputer, <strong>mutual exclusion<\/strong> (mutex) adalah sebuah <a href=\"https:\/\/www.linuxid.net\/istilah\/program\/\">objek program<\/a> yang mencegah beberapa <a href=\"https:\/\/www.linuxid.net\/istilah\/thread\/\">thread<\/a> mengakses sumber daya bersama secara bersamaan. Sumber daya bersama dalam konteks ini adalah elemen <a href=\"https:\/\/www.linuxid.net\/istilah\/code\/\">kode<\/a> dengan critical section, yaitu bagian kode yang tidak boleh dieksekusi oleh lebih dari satu thread pada saat yang bersamaan. Contohnya, critical section dapat digunakan untuk memperbarui <a href=\"https:\/\/www.linuxid.net\/istilah\/variable\/\">variabel<\/a> global, memodifikasi tabel dalam sebuah <a href=\"https:\/\/www.linuxid.net\/istilah\/database\/\">database<\/a>, atau menulis file ke sebuah <a href=\"https:\/\/www.linuxid.net\/istilah\/server\/\">server<\/a>. Dalam kasus seperti ini, akses ke sumber daya bersama harus dikendalikan untuk mencegah masalah pada data atau program itu sendiri.<\/p>\n<h2>Apa itu Objek Mutex?<\/h2>\n<p>Dalam program <a href=\"https:\/\/www.linuxid.net\/istilah\/multithreading\/\">multithreading<\/a>, mutex adalah mekanisme yang digunakan untuk memastikan bahwa beberapa thread yang berjalan secara bersamaan tidak mencoba mengeksekusi critical section pada kode secara bersamaan. Jika mutex tidak digunakan, program dapat mengalami <a href=\"https:\/\/www.linuxid.net\/istilah\/race-condition\/\">race condition<\/a>, yaitu situasi di mana beberapa thread mencoba mengakses sumber daya yang sama dalam waktu yang bersamaan. Ketika hal ini terjadi, hasil yang tidak diinginkan dapat muncul, seperti data yang dibaca atau ditulis dengan tidak benar, atau program yang berperilaku tidak semestinya hingga mengalami crash.<\/p>\n<p>Untuk memahami cara kerja mutex, pertimbangkan program multithreading yang memiliki metode untuk memperbarui variabel penghitung. Metode ini bertanggung jawab untuk membaca nilai saat ini, menambahnya dengan 1, dan menulis kembali ke <a href=\"https:\/\/www.linuxid.net\/istilah\/memory\/\">memori<\/a>. Jika dua thread menjalankan metode ini satu per satu secara berurutan, nilai akhirnya akan diperbarui dengan benar. Namun, jika kedua thread membaca nilai sebelum ada perubahan, hasil akhirnya bisa salah.<\/p>\n<h2>Mutex dalam Pemrograman<\/h2>\n<p>Sebuah program multithreading dapat secara eksplisit meminta mutex untuk setiap sumber daya bersama dari <a href=\"https:\/\/www.linuxid.net\/istilah\/system\/\">sistem<\/a>. Jika sebuah thread perlu mengakses sumber daya tersebut, pertama-tama harus memeriksa apakah mutex sudah terkunci atau belum. Jika tidak terkunci, thread dapat mengeksekusi critical section. Jika terkunci, sistem biasanya akan mengantrekan thread hingga mutex tidak lagi terkunci.<\/p>\n<h3>Implementasi Mutex dalam Python<\/h3>\n<p>Di Python, mutex dapat diterapkan menggunakan modul <code>threading<\/code>. Contoh berikut menunjukkan cara kerja mutex dalam Python:<\/p>\n<pre><code class=\"python\/\">import threading\r\nimport time\r\n\r\nmutex = threading.Lock()\r\ndef get_data(cnt):\r\n    mutex.acquire()\r\n    try:\r\n        thread_id = threading.get_ident()\r\n        time.sleep(0.5)\r\n        print(f\"Count: {cnt} (thread {thread_id})\")\r\n    finally:\r\n        mutex.release()\r\n\r\ncount = 1\r\nmax_count = 10\r\nwhile True:\r\n    thread = threading.Thread(target=get_data, args=(count,))\r\n    thread.start()\r\n    count += 1\r\n    if count &gt; max_count:\r\n        break<\/code><\/pre>\n<p>Pada skrip di atas:<\/p>\n<ul>\n<li>Mutex dibuat menggunakan <code>threading.Lock()<\/code>.<\/li>\n<li>Fungsi <code>get_data<\/code> meminta mutex dengan <code>acquire()<\/code> dan melepaskannya dengan <code>release()<\/code> setelah selesai.<\/li>\n<li>Program membuat thread baru dalam loop yang memastikan hanya satu thread yang dapat mengakses sumber daya dalam satu waktu.<\/li>\n<\/ul>\n<h3>Tanpa Mutex<\/h3>\n<p>Berikut adalah contoh tanpa mutex, yang menunjukkan hasil tidak teratur:<\/p>\n<pre><code class=\"python\/\">import threading\r\nimport time\r\n\r\ndef get_data(cnt):\r\n    time.sleep(0.5)\r\n    thread_id = threading.get_ident()\r\n    print(f\"Count: {cnt} (thread {thread_id})\")\r\n\r\ncount = 1\r\nmax_count = 10\r\nwhile True:\r\n    thread = threading.Thread(target=get_data, args=(count,))\r\n    thread.start()\r\n    count += 1\r\n    if count &gt; max_count:\r\n        break<\/code><\/pre>\n<h2>Perkembangan Teknologi Terkait Mutex<\/h2>\n<p>Dalam beberapa tahun terakhir, penggunaan mutex telah berkembang dengan teknologi baru seperti:<\/p>\n<ul>\n<li><strong>Transactional Memory:<\/strong> Konsep ini mengurangi kebutuhan akan mutex dengan memungkinkan transaksi atomik dalam akses memori bersama.<\/li>\n<li><strong>Lock-Free Data Structures:<\/strong> Struktur data yang tidak memerlukan mutex, mengurangi overhead dalam lingkungan multithreading.<\/li>\n<li><strong>Rust Programming Language:<\/strong> Bahasa pemrograman Rust memiliki fitur &#8220;ownership&#8221; yang mencegah race condition tanpa memerlukan mutex secara eksplisit.<\/li>\n<\/ul>\n<p>Mutex tetap menjadi solusi utama untuk menghindari race condition, tetapi perkembangan teknologi terus menawarkan alternatif yang lebih efisien.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apa itu Mutual Exclusion (Mutex)? Dalam pemrograman komputer, mutual exclusion (mutex) adalah sebuah objek program yang mencegah beberapa thread mengakses sumber daya bersama secara bersamaan. Sumber daya bersama dalam konteks ini adalah elemen kode dengan critical section, yaitu bagian kode yang tidak boleh dieksekusi oleh lebih dari satu thread pada saat yang bersamaan. Contohnya, critical [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[271],"tags":[91],"class_list":["post-5218","post","type-post","status-publish","format-standard","hentry","category-software-development","tag-cloud-and-data-center-networking"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Apa itu mutual exclusion (mutex)? - Istilah Komputer<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Apa itu mutual exclusion (mutex)? - Istilah Komputer\" \/>\n<meta property=\"og:description\" content=\"Apa itu Mutual Exclusion (Mutex)? Dalam pemrograman komputer, mutual exclusion (mutex) adalah sebuah objek program yang mencegah beberapa thread mengakses sumber daya bersama secara bersamaan. Sumber daya bersama dalam konteks ini adalah elemen kode dengan critical section, yaitu bagian kode yang tidak boleh dieksekusi oleh lebih dari satu thread pada saat yang bersamaan. Contohnya, critical [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/\" \/>\n<meta property=\"og:site_name\" content=\"Istilah Komputer\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-04T04:26:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-03T16:53:09+00:00\" \/>\n<meta name=\"author\" content=\"adhit\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"adhit\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/\",\"url\":\"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/\",\"name\":\"Apa itu mutual exclusion (mutex)? - Istilah Komputer\",\"isPartOf\":{\"@id\":\"https:\/\/linuxid.net\/istilah\/#website\"},\"datePublished\":\"2025-01-04T04:26:06+00:00\",\"dateModified\":\"2025-02-03T16:53:09+00:00\",\"author\":{\"@id\":\"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/linuxid.net\/istilah\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"mutual exclusion (mutex)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/linuxid.net\/istilah\/#website\",\"url\":\"https:\/\/linuxid.net\/istilah\/\",\"name\":\"Istilah Komputer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/linuxid.net\/istilah\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d\",\"name\":\"adhit\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1777193465\",\"contentUrl\":\"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1777193465\",\"caption\":\"adhit\"},\"sameAs\":[\"https:\/\/linuxid.net\/istilah\"],\"url\":\"https:\/\/www.linuxid.net\/istilah\/author\/xsandradietsax\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Apa itu mutual exclusion (mutex)? - Istilah Komputer","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/","og_locale":"id_ID","og_type":"article","og_title":"Apa itu mutual exclusion (mutex)? - Istilah Komputer","og_description":"Apa itu Mutual Exclusion (Mutex)? Dalam pemrograman komputer, mutual exclusion (mutex) adalah sebuah objek program yang mencegah beberapa thread mengakses sumber daya bersama secara bersamaan. Sumber daya bersama dalam konteks ini adalah elemen kode dengan critical section, yaitu bagian kode yang tidak boleh dieksekusi oleh lebih dari satu thread pada saat yang bersamaan. Contohnya, critical [&hellip;]","og_url":"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/","og_site_name":"Istilah Komputer","article_published_time":"2025-01-04T04:26:06+00:00","article_modified_time":"2025-02-03T16:53:09+00:00","author":"adhit","twitter_card":"summary_large_image","twitter_misc":{"Ditulis oleh":"adhit","Estimasi waktu membaca":"3 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/","url":"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/","name":"Apa itu mutual exclusion (mutex)? - Istilah Komputer","isPartOf":{"@id":"https:\/\/linuxid.net\/istilah\/#website"},"datePublished":"2025-01-04T04:26:06+00:00","dateModified":"2025-02-03T16:53:09+00:00","author":{"@id":"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d"},"breadcrumb":{"@id":"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.linuxid.net\/istilah\/mutual-exclusion-mutex\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/linuxid.net\/istilah\/"},{"@type":"ListItem","position":2,"name":"mutual exclusion (mutex)"}]},{"@type":"WebSite","@id":"https:\/\/linuxid.net\/istilah\/#website","url":"https:\/\/linuxid.net\/istilah\/","name":"Istilah Komputer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/linuxid.net\/istilah\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Person","@id":"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/ec7c6c711087fb70886ff5a4fe68e83d","name":"adhit","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/linuxid.net\/istilah\/#\/schema\/person\/image\/","url":"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1777193465","contentUrl":"https:\/\/www.linuxid.net\/istilah\/wp-content\/litespeed\/avatar\/808829c8eb1b70c161b392916104c2ba.jpg?ver=1777193465","caption":"adhit"},"sameAs":["https:\/\/linuxid.net\/istilah"],"url":"https:\/\/www.linuxid.net\/istilah\/author\/xsandradietsax\/"}]}},"_links":{"self":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/posts\/5218","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/comments?post=5218"}],"version-history":[{"count":0,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/posts\/5218\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/media?parent=5218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/categories?post=5218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxid.net\/istilah\/wp-json\/wp\/v2\/tags?post=5218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}